Azure推送通知工作Randomliy

时间:2015-05-05 10:08:44

标签: azure azure-webjobs azureservicebus azure-notificationhub

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

我使用Service Bus Queue和WebJob发送通知,我可以看到Android成功执行的事情,但大多数时间通知都没有传递到应用程序,通知状态等于已排队和成功等于0,失败等于0

我将Microsoft.ServiceBus更新为最新版本但未解决此问题。

最后,Apple通知已成功运行,但现在它们正在抛出异常" 远程服务器返回错误:(400)错误请求。提供的通知有效内容无效"

有没有人面临类似的问题?

1 个答案:

答案 0 :(得分:0)

通过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;
 }

/ ISA