Apple Multiple Push Notifications 在通知托盘中不可见

Apple Multiple Push Notifications not visible in Notifications Tray

我基本上想在 iOS 的通知栏中显示同一个应用程序中的多个推送通知。

如果在通过 APNS 触发推送通知时我的数据处于打开状态,则此方案有效,但仅收到最新的一个,以防我离线并在一段时间后回来。 APNS 文档确认了此功能。

然而,这在 WhatsApp 中起作用:

  1. 关闭数据连接
  2. 向 WhatsApp 发送了一些消息
  3. 打开数据连接
  4. 看到在 Apple 的通知托盘中收到了多个推送通知

这种情况如何运作?我可以为此使用 APNS 吗?如果是,那又如何?

在微信中查看 this sample image 多个推送通知。

Troubleshooting Push Notifications中有说明。检查 "Some Notifications Received, but Not All" 部分。

正如您在问题中所写,Apple Docs 中提到了这一点:

If you are sending multiple notifications to the same device or computer within a short period of time, the push service will send only the last one.

Link

只有 你所描述的情况是如果你的 whatsApp 在后台打开时获取那些 push notifications。这样 whatsApp 会将它们处理为 local notifications 并将它们全部显示在通知中心。如果 whatsApp 已关闭,您将像任何其他应用程序一样仅收到最后通知。

你可以很容易地测试这个:

  1. 终止 whatsApp 并打开 Airplane mode
  2. 从 1 到 5 向您的设备发送 5 条消息。
  3. 关闭 Airplane mode 并锁定您的设备。
  4. 您只会在 notifications center.
  5. 中看到一条消息(您发送的最后一条消息也称为“5”)

这就是 whatsApp 的运作方式:

当 whatsApp 在后台时,会收到一个推送通知(用户发送的最后一个通知,在我们的示例中为“5”)。该消息不会显示给用户。

whatsApp 在 application:didReceiveRemoteNotification:fetchCompletionHandler: 方法中接收它并检查他们的服务器是否有任何用户未收到的“5”之前的通知。如果是这种情况,他们将从他们的服务器中提取数据并使用 local notifications 将其呈现给用户,这基本上只是一种呈现数据的方式,与 APNS 完全无关。

如上所述,您无法控制这些推送通知。

不过你可能知道,从iOS7开始,一种新的后台执行模式(远程通知)允许应用程序在收到推送时被系统唤醒,允许您处理一些数据,然后回去睡觉...

这可能就是诀窍:使用这种方式(静默地)接收推送通知,然后触发您自己的本地通知,而不是像@Segev 所说的那样。 See the UIBackgroundModes here.