Apple Multiple Push Notifications 在通知托盘中不可见
Apple Multiple Push Notifications not visible in Notifications Tray
我基本上想在 iOS 的通知栏中显示同一个应用程序中的多个推送通知。
如果在通过 APNS 触发推送通知时我的数据处于打开状态,则此方案有效,但仅收到最新的一个,以防我离线并在一段时间后回来。 APNS 文档确认了此功能。
然而,这在 WhatsApp 中起作用:
- 关闭数据连接
- 向 WhatsApp 发送了一些消息
- 打开数据连接
- 看到在 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.
只有 你所描述的情况是如果你的 whatsApp 在后台打开时获取那些 push notifications
。这样 whatsApp 会将它们处理为 local notifications
并将它们全部显示在通知中心。如果 whatsApp 已关闭,您将像任何其他应用程序一样仅收到最后通知。
你可以很容易地测试这个:
- 终止 whatsApp 并打开
Airplane mode
。
- 从 1 到 5 向您的设备发送 5 条消息。
- 关闭
Airplane mode
并锁定您的设备。
- 您只会在
notifications center
. 中看到一条消息(您发送的最后一条消息也称为“5”)
这就是 whatsApp 的运作方式:
当 whatsApp 在后台时,会收到一个推送通知(用户发送的最后一个通知,在我们的示例中为“5”)。该消息不会显示给用户。
whatsApp 在 application:didReceiveRemoteNotification:fetchCompletionHandler:
方法中接收它并检查他们的服务器是否有任何用户未收到的“5”之前的通知。如果是这种情况,他们将从他们的服务器中提取数据并使用 local notifications
将其呈现给用户,这基本上只是一种呈现数据的方式,与 APNS 完全无关。
如上所述,您无法控制这些推送通知。
不过你可能知道,从iOS7开始,一种新的后台执行模式(远程通知)允许应用程序在收到推送时被系统唤醒,允许您处理一些数据,然后回去睡觉...
这可能就是诀窍:使用这种方式(静默地)接收推送通知,然后触发您自己的本地通知,而不是像@Segev 所说的那样。 See the UIBackgroundModes here.
我基本上想在 iOS 的通知栏中显示同一个应用程序中的多个推送通知。
如果在通过 APNS 触发推送通知时我的数据处于打开状态,则此方案有效,但仅收到最新的一个,以防我离线并在一段时间后回来。 APNS 文档确认了此功能。
然而,这在 WhatsApp 中起作用:
- 关闭数据连接
- 向 WhatsApp 发送了一些消息
- 打开数据连接
- 看到在 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.
只有 你所描述的情况是如果你的 whatsApp 在后台打开时获取那些 push notifications
。这样 whatsApp 会将它们处理为 local notifications
并将它们全部显示在通知中心。如果 whatsApp 已关闭,您将像任何其他应用程序一样仅收到最后通知。
你可以很容易地测试这个:
- 终止 whatsApp 并打开
Airplane mode
。 - 从 1 到 5 向您的设备发送 5 条消息。
- 关闭
Airplane mode
并锁定您的设备。 - 您只会在
notifications center
. 中看到一条消息(您发送的最后一条消息也称为“5”)
这就是 whatsApp 的运作方式:
当 whatsApp 在后台时,会收到一个推送通知(用户发送的最后一个通知,在我们的示例中为“5”)。该消息不会显示给用户。
whatsApp 在 application:didReceiveRemoteNotification:fetchCompletionHandler:
方法中接收它并检查他们的服务器是否有任何用户未收到的“5”之前的通知。如果是这种情况,他们将从他们的服务器中提取数据并使用 local notifications
将其呈现给用户,这基本上只是一种呈现数据的方式,与 APNS 完全无关。
如上所述,您无法控制这些推送通知。
不过你可能知道,从iOS7开始,一种新的后台执行模式(远程通知)允许应用程序在收到推送时被系统唤醒,允许您处理一些数据,然后回去睡觉...
这可能就是诀窍:使用这种方式(静默地)接收推送通知,然后触发您自己的本地通知,而不是像@Segev 所说的那样。 See the UIBackgroundModes here.