2

Firebase Cloud Messagingのアップストリームメッセージ(デバイスからサーバへのメッセージ)のマニュアルでは、デバイスがオフラインの場合にメッセージが配信される方法について説明しています。FCMのアップストリームメッセージ配信の信頼性はどれくらいですか?

Android:デバイスがオフラインであるか、FCMサービスがサーバーにアップストリームメッセージを転送することが利用できない、Androidのクライアントアプリケーションのインスタンスが20の保留中のメッセージの最大を蓄積することができる場合には

iOS

FCMクライアントライブラリは、クライアントアプリケーションにメッセージをキャッシュし、クライアントがアクティブなサーバ接続を持っているときにそれを送信します。

メッセージを配信する前にアプリを終了したらどうなりますか? Firebaseは、一度接続が復元されると、そのようなメッセージを配信するためにあらゆる種類のバックグラウンドサービスを使用しようとしますか?または、アプリケーションが次に開かれるまでキューに入れられますか、または完全に破棄されますか?

編集:私の実験では、少なくともアプリケーションの再起動後にメッセージを保存する永続的なキューがあります。しかし、私はまだ(各オペレーティングシステム上で)Firebaseメッセージングサービスを実行させる原因がどのような状況にあるのか、特にそのアプリケーションがバックグラウンドになっているかどうかはわかりません。

答えて

0

あなたが言及したiOSの部分では、それが明示的にと述べている:クライアントアプリに

FCMクライアントライブラリキャッシュメッセージを、クライアントがアクティブなサーバ接続を持っているときにそれを送信します。

これはAndroidでも同じことだと思います。キャッシュがクライアントアプリケーション用にクリアされていない限り、データはまだそこに残っていると言っても間違いありません。しかし、@DanHulmeによって、このanswerで言及されたものを心に留めておくのも良いです:

キャッシュされた背景Androidは、彼らは「場合でも、メモリ内のバックグラウンド・プロセスを保持していることを忘れないでください

を処理します別のプロセスがそのメモリを使用する必要があるまで、実行を停止します。アプリが「停止」している場合は、Androidをメモリに保持していても、リソースを使用していません。

接続があるとき、だから私は(あなたが上流のメッセージが正常に送信されたかどうか、あなたのクライアントアプリでチェッカーを実装するために、後で時間でそれを再送信することが最善だと思いますすでに利用可能な場合は)。

+0

引用したドキュメントにはキャッシュが記載されていますが、キャッシュが永続的であるかどうかはわかりません。それは、私の実験では、それが証明されていると言いました。私が気にかけているのは、Firebaseメッセージングサービスが実際にどのような状況で生きていて、メッセージを送信しようとしているかです。 (また、TTLに関する無関係の訂正:TTLが含まれていない場合は、デフォルトで0になります。これは、メッセージが瞬時に送信されるか廃棄されることを意味します。) – ArthurDenture

+0

@ArthurDenture私は、Androidの(またはデバイスに応じてiOS)キャッシュの永続性については問題があり、FCMの上流のメッセージ配信ではないと言います。 TTLの場合、[here](https://firebase.google.com/docs/cloud-messaging/concept-options)には、「time_to_live」フラグがセットされていない限り、デフォルトのタイムアウトは4週間となっています*。 –

+1

そのリンクはダウンストリームメッセージを記述します。アップストリームメッセージの場合、[デフォルトのttl値は0です(https://firebase.google.com/docs/reference/android/com/google/firebase/messaging/RemoteMessage.Builder.html#setTtl(int))。 – ArthurDenture

関連する問題