【发布时间】:2010-12-10 23:03:21
【问题描述】:
当接收方 iPhone 关闭时,我看到 Apple Push Notification Servers 出现了一些非常奇怪的行为。这是我的场景:
-向 Apple 发送推送通知 A。在几秒钟内,推送通知弹出窗口会按预期显示在 iPhone 上。
- 向Apple发送空白通知以取消上一个(上一个通知在大约10秒后毫无意义,这就是我想摆脱它的原因)。 iPhone 上没有显示任何内容。
- 完全关闭 iPhone(不是睡眠,它已关机)。
- 向 Apple 发送推送通知 B。等待 10 秒。
- 向 Apple 发送空白通知以取消之前的通知。等待 10 秒。
- 向 Apple 发送推送通知 C。等待 10 秒。
- 向 Apple 发送空白通知以取消之前的通知。等待 30 秒。
- 打开 iPhone。
- 大约 60 秒后,会在 iPhone 上显示通知 B 的推送通知弹出窗口。
- 通知 C 似乎永远不会到达。
这很奇怪!通过阅读 Apple 文档,我期望只发送最新的推送通知。我希望我的空白通知会被发送,我当然没想到会发送最旧的未发送推送通知!
Apple 文档说:
Apple 推送通知服务包含一个默认的服务质量 (QoS) 组件,该组件执行存储和转发功能。如果 APNS 尝试发送通知但设备处于离线状态,则 QoS 会存储通知。它只为设备上的每个应用程序保留一个通知:从该应用程序的提供者处收到的最后一个通知。当离线设备稍后重新连接时,QoS 会将存储的通知转发给设备。 QoS 在删除通知之前将其保留一段有限的时间。
有人见过这种行为吗?我只是遇到某种时间窗口错误吗?应该怎么办?
更新:
- 如果我在发送任何推送通知之前关闭手机并等待 5 到 15 分钟,则不会发生此问题。在这种情况下,当我打开手机时,我看不到任何通知弹出窗口,尽管我不确定这是否是苹果放弃通知的结果,或者他们的“队列”工作正常(即持有最新的空白通知)弹出窗口的第一个)。
-我将通过将 APNsLogging.mobileconfig 放到 iPhone 上来进一步调查,以查看它收到了哪些通知。
- 关闭 wifi 似乎并没有改变结果。
-我已经针对这种情况向 Apple 提出了错误报告。
【问题讨论】:
-
取消前一个是什么意思?通知发送后无法取消。
-
新的推送通知会清除接收它们的 iPhone 上以前的通知,因此您可以通过发送没有弹出消息的新空白通知来有效地取消以前的通知。这对我来说大部分都很好。
标签: iphone push-notification apple-push-notifications