我有移动应用程序,它使用后端服务注册Azure推送通知。事情一直很好,直到4天前,大多数通知都没有发送到应用程序。
我使用Service Bus Queue和WebJob发送通知,我可以看到Android成功执行的事情,但大多数时间通知都没有传递到应用程序,通知状态等于已排队和成功等于0,失败等于0
我将Microsoft.ServiceBus更新为最新版本但未解决此问题。
最后,Apple通知已成功运行,但现在它们正在抛出异常" 远程服务器返回错误:(400)错误请求。提供的通知有效内容无效"
有没有人面临类似的问题?
答案 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