设备离线时APNS仅存一条通知,WhatsApp如何接收多条通知?
设备离线后,WhatsApp类应用如何接收多用户消息?
根据苹果官方文档,当设备离线时,APNS仅为每个应用存储最后一条推送通知;设备联网后只会推送这条存储的通知,且通知仅保留有限时间。
针对这个限制,WhatsApp这类应用的解决思路是把APNS仅作为「唤醒触发器」,而非消息内容的传递渠道,具体流程是:
- 设备离线期间,所有好友发送的消息都会暂存在应用的服务器端,不会通过APNS逐条推送
- 当设备重新联网时,APNS仅向应用发送一条「唤醒信号」——可能是显示「有新消息」的普通通知,也可能是不显示的静默推送(通过
content-available: 1标记触发) - 设备收到这条唤醒信号后,会启动应用的后台进程,让App主动与服务器建立连接,拉取离线期间所有未同步的消息
- App完成消息拉取后,会在本地生成对应多条通知,展示给用户
这种方式完全绕开了APNS单条存储的限制,因为APNS只负责告诉App「该同步消息了」,真正的消息内容是App自己从服务器拉取的,自然能获取到所有离线期间来自多个用户的消息。
内容的提问来源于stack exchange,提问作者Dineshkumar Ladumor
相关产品推荐
相关产品推荐

