当APNS仅存储一个以防设备脱机时,whatsapp如何接收多个通知?

时间:2015-08-21 11:02:56

标签: ios apple-push-notifications whatsapp

根据Apple官方文档,APNS(Apple推送通知服务)仅存储设备离线时的最后通知。

  

Apple推送通知服务包含默认的服务质量   执行存储转发功能的(QoS)组件。如果是APN   尝试发送通知但设备处于离线状态,即QoS   存储通知。 每个只保留一个通知   设备上的应用程序:从a收到的最后一个通知   该应用程序的提供者。当离线设备以后   重新连接后,QoS将存储的通知转发给设备。   QoS在删除之前保留有限时间段内的通知   它

那么当设备上线时,whatsapp等应用程序如何从多个用户发送消息?如果设备在线,这些消息将作为单独的通知收到。

2 个答案:

答案 0 :(得分:7)

似乎在iOS 8上有这个问题的更新,即使您的用户手动杀死它,您的应用也会因为推送而在后台唤醒。看看这个:Wake your app in the background using PushKit in iOS8

这意味着您可以向您的应用发送通知,一旦重新连接,它将被操作系统唤醒,并能够与您的服务器通信。然后,您可以实现逻辑,以便将设备脱机时丢失的所有推送消息发送给它。

我必须承认我自己还没有尝试过,但听起来这可能是你所描述的问题的解决方案。

答案 1 :(得分:2)

由于您在设备离线时发送的每个通知都会有效地覆盖现有通知,因此您有两种方法可以解决此问题:

  • 在每个通知中包含设备尚未了解的所有消息(因此您将包含消息A的通知替换为包含消息A和B的消息)。您可能会在某个时候遇到最大大小限制。

  • 根本不要在通知中包含实际消息。当应用程序收到通知时,它可以向服务器请求新消息。