Firebase Cloud Messaging上游消息(从设备到服务器的消息)的文档描述了如果设备处于脱机状态,消息如何排队以供传递。FCM上游消息传递的可靠性如何?
在情况下,该装置是离线或FCM服务不可用上游消息转发到服务器,Android客户端应用程序实例也可以在最大20个未决消息的累积。
iOS:
的FCM客户端库缓存上的客户端应用程序的消息,并且当客户端具有活动服务器连接发送它。
但是如果应用程序在消息传递之前关闭,怎么样?一旦连接恢复,Firebase是否尝试使用任何类型的后台服务来传递此类消息?或者他们排队等到应用程序下次打开,还是完全丢弃?
编辑:在我的实验中,至少有一个持续队列可以跨应用程序重新启动保存消息。但是我仍然不确定(在每个操作系统上)什么情况会导致Firebase消息传递服务运行或不运行,尤其是当应用程序后台运行时。
您引用的文档提到了一个缓存,但并没有说明缓存是否持久。这就是说,在我的实验中,它已被证明是。我仍然对此感到好奇的是,Firebase消息服务在何种情况下确实处于活动状态并尝试发送消息。 (另外,TTL不相关的修正:当不包括TTL时,它默认为0,这意味着消息立即发送或丢弃。) – ArthurDenture
@ArthurDenture我想这就是说,问题应该更多地放在Android(或iOS取决于设备)缓存持久性上,而不是FCM上游消息递送。对于TTL,很确定它说[这里](https://firebase.google.com/docs/cloud-messaging/concept-options)*默认超时时间为四周,除非设置了'time_to_live'标志*。 –
该链接描述下游消息。对于上游消息,[默认ttl值为0](https://firebase.google.com/docs/reference/android/com/google/firebase/messaging/RemoteMessage.Builder.html#setTtl(int))。 – ArthurDenture