Azure推送通知可以随机工作

Azure推送通知可以随机工作,azure,azure-webjobs,azureservicebus,azure-notificationhub,Azure,Azure Webjobs,Azureservicebus,Azure Notificationhub,我有一个移动应用程序,它使用后端服务注册Azure推送通知。直到4天前,大多数通知都没有发送到应用程序,情况一直很好 我正在使用Service Bus Queue和WebJob发送通知,我可以看到Android成功执行的操作,但大多数情况下通知不会发送到应用程序,通知状态为排队,成功为0,失败为0 我将Microsoft.ServiceBus更新为最新版本,但这并没有解决问题 最后一件事,Apple通知过去可以成功运行,但现在它们抛出异常“远程服务器返回错误:(400)错误请求。提供的通知负载无

我有一个移动应用程序,它使用后端服务注册Azure推送通知。直到4天前,大多数通知都没有发送到应用程序,情况一直很好

我正在使用Service Bus Queue和WebJob发送通知,我可以看到Android成功执行的操作,但大多数情况下通知不会发送到应用程序,通知状态为排队,成功为0,失败为0

我将Microsoft.ServiceBus更新为最新版本,但这并没有解决问题

最后一件事,Apple通知过去可以成功运行,但现在它们抛出异常“远程服务器返回错误:(400)错误请求。提供的通知负载无效。”


有人面临类似的问题吗?

我在通过Azure的通知中心向iOS设备发送通知时也遇到过同样的问题。在集线器上调用“SendAppleNativeNotificationAsync”方法时,我收到了相同的错误消息

我通过替换“\”和“'”来确保我的邮件中没有非法字符。在阅读了一些关于通知最大限制问题的帖子后,我们决定将消息大小限制为150个字符(一个神奇的数字,我们没有做任何研究来确定推送通知消息的大小)

我还更改了JSON负载的创建方式,现在使用Newtonsoft.JSON.Linq使用我的负载创建JSON对象。我之前为有效负载创建了一个简单的json字符串,如下所示:

var apnsMessage = "{\"aps\":{\"alert\":"+message+", \"sound\" : \"default\", \"badge\" : 1}}";
现在,我的JSON对象是这样创建的:

var jsonPayload = JObject.FromObject(new
            {
                aps = new { alert = message.Replace("\"", "").Replace("'", "") },
                sound = "default",
                badge = 1
            });
我发送的通知如下:

await Hub.SendAppleNativeNotificationAsync(jsonPayload.ToString());
希望这能帮助你(或其他有同样问题的人):)

编辑: 下面是修剪/截断字符串的简单助手:)

/伊萨

 private static string GetTrimmedAndTruncatedString(string source, int length)
 {
     return source.Length > length ? source.Substring(0, length) + "..." : source;
 }