【问题标题】:FCM behavior when offline for iOSiOS 离线时的 FCM 行为
【发布时间】:2016-07-08 18:48:22
【问题描述】:

当我向离线(例如处于飞行模式或关闭)的 iOS 设备发送通知时,我无法弄清楚 FCM 的行为方式。

time_to_live 属性的文档提到了Currently, time_to_live is not supported for notification messages on iOS.,但没有提供对所做操作的解释。我试过测试它,它似乎有时会通过推送通知,有时不会,不管我将time_to_live 属性设置为什么,尽管我不确定这是由于节流还是其他原因发生在 FCM 端。

与此相关,我似乎无法让 delay_while_idle 属性在 iOS 上工作,尽管文档没有明确提到它不适用于 iOS - 在手机睡着时发送的通知仍然会唤醒电话,即使我将delay_while_idle 设置为true。

有人知道这应该如何工作吗?

【问题讨论】:

    标签: firebase apple-push-notifications firebase-cloud-messaging


    【解决方案1】:

    time_to_live 是适用于 Android 和 iOS 的 AFAIK。但是,由于 FCM 将消息发送到 iOS 设备的过程如下:

    应用服务器 > FCM 服务器 > APNs > iOS 设备

    可以肯定地说,只有 FCM 服务器使用 time_to_live,因为它是 description

    此参数指定如果设备离线,消息应在 FCM 存储中保留多长时间(以秒为单位)。支持的最长生存时间为 4 周,默认值为 4 周。如需更多信息,请参阅Setting the lifespan of a message

    环顾四周,发送到离线设备时 APNs 的行为是(来自Apple docs):

    Apple 推送通知服务包括一个执行存储和转发功能的服务质量 (QoS) 组件。如果 APNs 尝试发送通知并且目标设备处于离线状态,则 APNs 会在有限的时间段内存储通知,并在设备再次可用时发送通知。此组件仅存储每个设备和每个应用程序的最新通知。如果设备离线,发送针对该设备的通知请求会导致先前的请求被丢弃。如果设备长时间处于离线状态,则其在 APN 中存储的所有通知都会被丢弃。

    截至目前,delay_while_idle 现已弃用。

    我知道您可以唤醒 iOS 手机(在线/连接到正常网络)的方式是简单地set the priority to high

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多