我基本上想在 iOS 的通知托盘中显示同一个应用程序中的多个推送通知。
如果在通过 APNS 触发推送通知时我的数据处于打开状态,则此方案有效,但仅收到最新的数据以防我离线并在一段时间后返回。APNS 文档确认了此功能。
然而,这是在 WhatsApp 中起作用的:
- 关闭数据连接
- 向 WhatsApp 发送了一些消息
- 打开数据连接
- 在 Apple 的通知托盘中看到多个推送通知
这个场景如何运作?我可以为此使用 APNS 吗?如果是,那么如何?
请参阅微信中多个推送通知的示例图像。
我基本上想在 iOS 的通知托盘中显示同一个应用程序中的多个推送通知。
如果在通过 APNS 触发推送通知时我的数据处于打开状态,则此方案有效,但仅收到最新的数据以防我离线并在一段时间后返回。APNS 文档确认了此功能。
然而,这是在 WhatsApp 中起作用的:
这个场景如何运作?我可以为此使用 APNS 吗?如果是,那么如何?
请参阅微信中多个推送通知的示例图像。
就像您在问题中所写的那样,Apple Docs 中提到了这一点:
如果您在短时间内向同一设备或计算机发送多个通知,推送服务将仅发送最后一个。
您所描述的唯一可行的情况是,如果您的 WhatsApp 在获取这些push notifications
. 这样,whatsApp 将处理它们并将它们local notifications
全部显示在通知中心。如果 WhatsApp 已关闭,您将只收到最后一条通知,就像任何其他应用程序一样。
您可以轻松地对此进行测试:
Airplane mode
.Airplane mode
并锁定您的设备。notifications center
.这就是 WhatsApp 的运作方式:
当 WhatsApp 在后台时,会收到一个推送通知(用户发送的最后一个,在我们的示例中为“5”)。该消息不会显示给用户。
whatsApp 在该方法中接收它,application:didReceiveRemoteNotification:fetchCompletionHandler:
并检查他们的服务器是否有任何在“5”之前用户没有收到的通知。如果是这种情况,他们将从服务器中提取数据并将其呈现给用户,local notifications
这基本上只是一种呈现数据的方式,与 APNS 完全无关。
故障排除推送通知中对此进行了说明。检查“收到一些通知,但不是全部”部分。
如前所述,您无法控制这些推送通知。
不过你可能知道,从 iOS7 开始,一个新的后台执行模式(remote-notification)允许 App 在收到推送时被系统唤醒,让你处理一些数据,然后重新进入睡眠状态......
这可能是诀窍:使用这种方式接收推送通知(静默),然后触发您自己的本地通知,而不是 @Segev 说的。请参阅此处的 UIBackgroundModes。