2009-10-28 59 views
3

当收件人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并不会改变结果。
- 我在这种情况下向苹果公司提出了一个错误报告。

+0

你是什么意思取消上一个?发送后无法取消通知。 – erotsppa 2009-10-30 14:26:00

+0

新的推送通知会清除iPhone上接收它们的先前通知,因此您可以通过发送新的空白通知而无需弹出消息来有效取消先前的通知。这对我来说大体上工作正常。 – 2009-12-03 21:37:50

回答

1

为了记录在案,我与苹果公司29日OCT(https://bugreport.apple.com)提出了这个错误作为ID#7349660,然后给了他们,他们在10月30日

从那时起从苹果没有回应想要的附加诊断,所以我我认为这在他们的优先级列表中可能只是很低,这是公平的,因为它是一个相当小的时间窗口,可以发生问题(我没有意识到当我第一次打开这个问题时)。

3

您可能希望通过蜂窝网络和WiFi网络检查此行为。手机使用WiFi时会出现很多奇怪的行为,特别是涉及多个NAT路由器的情况,例如,在一个大型公司中有一个主要路由器和每层WiFi路由器,或者在您有多台路由器的家中使用扩大范围。但在细胞上它非常稳固。

此外,10秒的取消延迟可能会将其切得太近。他们不保证及时交付,并且在排队推送请求后,我在生产服务器上的滞后时间高达3分钟。你可能想要计划系统拥塞。

无论哪种方式,它听起来像它可能值得bugreporter报告。

0

在苹果的文档据说它可以缓存推送通知高达30 days.so一旦你在你的iPhone切换(前提是你有互连)

+0

您是否看过我的文章,或只是标题?是的,我知道 - 在我的帖子中,我解释说,在打开电话后,我确实收到了一个推送通知。但是,这只是一系列四项的第一次推动,我的问题是它是否应该是最近的推动,而不是最早的。 – 2009-10-28 19:24:47

0

后,C发送多久ü可能会推B'它似乎可能是一个错误,那里有某种超时服务器端,他们不小心保持B,如果C发送太快后...

如果你有一个很好的测试例子(这似乎是一个很好的测试)我会就此提交雷达报告。

+0

我的测试在每次推送通知之间都有大约10秒的时间。我打算重新测试并改变一些时间间隔以查看是否可以改变这种行为,然后我会向Apple发出一个错误(https://bugreport.apple.com)。 – 2009-10-29 17:34:18