5

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

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

然而,这是在 WhatsApp 中起作用的:

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

这个场景如何运作?我可以为此使用 APNS 吗?如果是,那么如何?

请参阅微信中多个推送通知的示例图像

4

3 回答 3

5

就像您在问题中所写的那样,Apple Docs 中提到了这一点:

如果您在短时间内向同一设备或计算机发送多个通知,推送服务将仅发送最后一个。

关联

您所描述的唯一可行的情况是,如果您的 WhatsApp 在获取这些push notifications. 这样,whatsApp 将处理它们并将它们local notifications全部显示在通知中心。如果 WhatsApp 已关闭,您将只收到最后一条通知,就像任何其他应用程序一样。

您可以轻松地对此进行测试:

  1. 终止 WhatsApp 并打开Airplane mode.
  2. 从 1 到 5 向您的设备发送 5 条消息。
  3. 关闭Airplane mode并锁定您的设备。
  4. 您只会在notifications center.

这就是 WhatsApp 的运作方式:

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

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

于 2015-02-16T09:15:55.087 回答
-1

故障排除推送通知中对此进行了说明。检查“收到一些通知,但不是全部”部分。

于 2015-02-16T06:35:56.507 回答
-1

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

不过你可能知道,从 iOS7 开始,一个新的后台执行模式(remote-notification)允许 App 在收到推送时被系统唤醒,让你处理一些数据,然后重新进入睡眠状态......

这可能是诀窍:使用这种方式接收推送通知(静默),然后触发您自己的本地通知,而不是 @Segev 说的。请参阅此处的 UIBackgroundModes

于 2015-02-22T15:06:08.217 回答