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