根据Apple官方文档,APNS(Apple推送通知服务)仅存储设备离线时的最后通知。
Apple推送通知服务包含默认的服务质量 执行存储转发功能的(QoS)组件。如果是APN 尝试发送通知但设备处于离线状态,即QoS 存储通知。 每个只保留一个通知 设备上的应用程序:从a收到的最后一个通知 该应用程序的提供者。当离线设备以后 重新连接后,QoS将存储的通知转发给设备。 QoS在删除之前保留有限时间段内的通知 它
那么当设备上线时,whatsapp等应用程序如何从多个用户发送消息?如果设备在线,这些消息将作为单独的通知收到。
答案 0 :(得分:7)
似乎在iOS 8上有这个问题的更新,即使您的用户手动杀死它,您的应用也会因为推送而在后台唤醒。看看这个:Wake your app in the background using PushKit in iOS8。
这意味着您可以向您的应用发送通知,一旦重新连接,它将被操作系统唤醒,并能够与您的服务器通信。然后,您可以实现逻辑,以便将设备脱机时丢失的所有推送消息发送给它。
我必须承认我自己还没有尝试过,但听起来这可能是你所描述的问题的解决方案。
答案 1 :(得分:2)
由于您在设备离线时发送的每个通知都会有效地覆盖现有通知,因此您有两种方法可以解决此问题:
在每个通知中包含设备尚未了解的所有消息(因此您将包含消息A的通知替换为包含消息A和B的消息)。您可能会在某个时候遇到最大大小限制。
根本不要在通知中包含实际消息。当应用程序收到通知时,它可以向服务器请求新消息。