iOS脱机时的FCM行为

时间:2016-07-08 18:48:22

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

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

time_to_live属性上的文档提到了attr(dfList, "message") <- c("A caption", "Which can have", "multiple lines") ,但没有提供相关内容的说明。我已经尝试过测试了,看起来推送通知有时会通过,有时也不会,无论我设置Currently, time_to_live is not supported for notification messages on iOS.属性是什么,尽管我不确定这是由于节流还是在FCM方面发生了其他事情。

相关地,我似乎无法让time_to_live属性在iOS上运行,尽管文档没有明确提到它不适用于iOS - 在手机处于睡眠状态时发送的通知仍然即使我将delay_while_idle设置为真,也要唤醒手机。

有没有人知道这应该如何运作?

1 个答案:

答案 0 :(得分:4)

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

  

App Server&gt; FCM服务器&gt; APN&gt; iOS设备

可以肯定地说,只有FCM服务器根据description使用time_to_live

  

此参数指定如果设备处于脱机状态,则应在FCM存储中保留消息的时间长度(以秒为单位)。支持的最长生存时间为4周,默认值为4周。有关详细信息,请参阅Setting the lifespan of a message

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

  

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

截至目前,delay_while_idle现已弃用。

我知道您可以唤醒 iOS手机(在线/连接到体面的网络)的方式只是set the priority to high