【发布时间】:2014-08-23 22:56:30
【问题描述】:
我们通过 Azure 通知中心(大部分)成功实现了向 iOS 和 Android 设备推送通知。
问题在于,某些 iOS 设备显然从未收到 Azure 通知中心发送的通知。
我们使用模板和标签将消息定向到适当的设备。标签是感兴趣的主题,而不是特定于用户的,因此我们希望将一个标签通知推送到订阅该标签的所有设备。
Android 设备似乎可以完美接收通知,但 iOS 设备并不一致。他们中的大多数人工作。一对夫妇没有。
我们很清楚推送通知是尽最大努力交付的,并且无法保证可靠性,但我们有限的测试表明,更多的设备始终无法接收推送通知,而不是看起来不合理(大约十几个设备的两次以上失败) )。
设置如下:
我们在后端有一个简单的 C# 例程,它连接到 Azure 通知中心并向 Azure 发送通知:
var outcome = await hub.SendTemplateNotificationAsync(properties, tag);
我们使用GetAllRegistrationsAsync 方法确保我们检查的每台设备都已成功注册并使用正确的模板。每台设备均已注册,所有模板均正确。
我们不处于“测试模式”; NotificationHubClient.CreateClientFromConnectionString 的 enableTestSend 参数设置为 False。
疑难解答:
当我们发出通知时,大多数设备都会收到通知,并且在我们正在测试的特定情况下,使用正确的数字更新徽章计数器。
但是,一些设备似乎没有收到通知。在我们重新启动设备后,其中一台设备确实收到了通知,但之后它就停止了。
使用上面提到的GetAllRegistrationsAsync方法,我们已经验证了问题设备在Azure上正确注册并且具有正确的标签和模板。
我们能够从 Azure 注册中确定问题设备的设备令牌。我们使用了一个直接与 APNS 通信的 PHP 脚本,使用它们的设备令牌向问题设备发送通知。每次,设备都会收到此直发通知。只有来自 Azure 的通知是不可靠的。
当我们检查 Azure Notification Hub Monitor 页面时,我们会看到过去 24 小时的这些指标:
- 967 APNS 成功通知
- 3 APNS 错误通道错误
- 2 APNS 过期频道错误
- 4 个 APNS 错误
... 一般而言,没有针对 APNS 或 Azure 报告其他错误。我们看到的故障率应该会产生超过 20 个错误计数。
我们无法确定哪些设备令牌对错误负责;有没有办法从 Azure 获取这些信息?
我们无法解释为什么我们可以通过 APNS 本身而不是通过 Azure 直接向这些设备发送通知,以及为什么 Azure 没有报告比它更多的错误。
有什么建议或见解吗?
【问题讨论】:
标签: ios azure push-notification apple-push-notifications azure-notificationhub