当收件人iPhone关闭时,我看到来自Apple推送通知服务器的一些非常奇怪的行为。这是我的场景:接收iPhone关闭时奇怪的Apple推送通知行为
- 向苹果发送推送通知A.在几秒钟内,推送通知弹出按钮在iPhone上按预期显示。
- 向Apple发送空白通知以取消上一个通知(之前的通知大约10秒后毫无意义,这就是为什么我想摆脱它)。 iPhone上没有显示任何内容。
- 完全关闭iPhone(不睡觉,关闭电源)。
- 向Apple发送推送通知B.等待10秒。
- 向Apple发送空白通知以取消上一个通知。等待10秒。
- 向Apple发送推送通知C.等待10秒。
- 向Apple发送空白通知以取消上一个通知。等待30秒。
- 打开iPhone。
- 约60秒后,在iPhone上显示通知B的推送通知弹出窗口。
通知C似乎永远不会到达。
这很奇怪!从阅读Apple文档,我期待只发送最新的推送通知。我希望我的空白通知将被发送,我当然并不期待最老的未发送推送通知被发送!
苹果的文档说:
苹果推送通知服务包括服务质量(QoS)组件,其执行一个存储和转发功能的默认质量。如果APNS尝试传递通知但设备处于脱机状态,则QoS将存储通知。它仅在设备上保留每个应用程序的一个通知:从该应用程序的提供商接收的最后一个通知。离线设备稍后重新连接时,QoS会将存储的通知转发给设备。 QoS在删除之前会在一段有限的时间内保留通知。
有没有人看到过这种行为?我是否遇到某种时间窗口错误?应该发生什么?
更新:
- 如果我关闭手机,并发送任何推送通知,则不会出现此问题之前,等待5〜15分钟。在这种情况下,当我打开手机时,我没有看到任何通知弹出窗口,尽管我不确定这是Apple是否放弃通知,或者他们的“队列”正常工作的结果(即,保留最新的空白通知与弹出的第一个)。
- 我将通过将APNsLogging.mobileconfig放到iPhone上来进一步调查,以查看它得到的通知。
- 关闭wifi并不会改变结果。
- 我在这种情况下向苹果公司提出了一个错误报告。
你是什么意思取消上一个?发送后无法取消通知。 – erotsppa 2009-10-30 14:26:00
新的推送通知会清除iPhone上接收它们的先前通知,因此您可以通过发送新的空白通知而无需弹出消息来有效取消先前的通知。这对我来说大体上工作正常。 – 2009-12-03 21:37:50