【问题标题】:Apple Multiple Push Notifications not visible in Notifications TrayApple 多个推送通知在通知托盘中不可见
【发布时间】:2015-02-13 14:54:45
【问题描述】:

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

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

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

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

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

微信多个推送通知见this sample image

【问题讨论】:

    标签: ios push-notification apple-push-notifications apns-php


    【解决方案1】:

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

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

    Link

    您所描述的唯一场景是,如果您的 WhatsApp 在后台打开,同时获取 push notifications。这样,whatsApp 会将它们作为local notifications 处理,并将它们全部显示在通知中心。如果 WhatsApp 已关闭,您将只收到最后一条通知,就像任何其他应用程序一样。

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

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

    这就是 WhatsApp 的运作方式:

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

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

    【讨论】:

    • :我在 whtsapp 上尝试了这个,关闭数据连接并在一段时间后重新上线(在此期间,whtsapp 是否在后台无关紧要)但它仍然收到所有推送通知。它可能没有正在使用 apns,但他们是如何实现它的,这是我需要知道的。
    • 我已经编辑了答案以使事情更清楚
    • application:didReceiveRemoteNotification:fetchCompletionHandler: 这个方法在终止状态下不起作用,所以我们怎么可能做到这一点,当我们收到最后一条消息时,然后请求并再次推送最后一条消息。
    【解决方案2】:

    Troubleshooting Push Notifications 中有解释。检查“收到了一些通知,但不是全部”部分。

    【讨论】:

      【解决方案3】:

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

      不过你可能知道,从 iOS7 开始,一种新的后台执行模式(remote-notification)允许 App 在收到推送时被系统唤醒,让你处理一些数据,然后回去睡觉吧……

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

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2014-09-20
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2017-11-18
        • 2015-04-09
        • 1970-01-01
        相关资源
        最近更新 更多