2016-11-27 3 views
0

Androidクライアントアプリが新しい登録トークンを受け取ると、FCM経由でこの新しいトークンをアプリサーバーに送信します。アプリケーションサーバーに新しいトークンがある場合、クライアントアプリケーションにメッセージを送信できます。クライアントが新しい登録トークンを送信したときにアプリサーバーがオフラインになる場合はどうなりますか?

クライアントがオフラインの場合、FCMはクライアントがオンラインになりメッセージをクライアントに転送するまでメッセージを保存します。ここまでは順調ですね。

BUTクライアントが新しい登録トークンを送信したいが、アプリケーションサーバーがオフラインの場合、オンラインになるとすぐにFCMはトークンを保存してアプリケーションサーバーに送信しません。

既存のメカニズム(定期的にregトークンをポーリングするタイマーメカニズムを除く)、ステータスが到達不能から到達可能に変更されるまで、アプリケーションサーバーは登録トークンを取得しますか?

+1

私の知る限り、App Serverが常にオンラインであることを確認する必要があります。私が頼りにしたことは、あなたのonResumeの新しいトークンが常にサーバーにアップロードされているかどうか、アプリのチェックであるかどうかです。 – Manny265

+0

のトークンがない可能性があります。あなたのバックエンドがあなたのアプリよりもうまくいかない場合、動作しません。あなたが何を求めているのか分かりません。必要な稼働時間を確保することで問題を完全に回避し、できるだけ多くの方法を増やすことが重要です。どのような理由でバックエンドが動作しない場合は、まれなコーナーケースを最適化しないでください。はるかに多い問題は、クライアントがオフラインになっているか、遅いネットワークまたはバックエンドに到達できないネットワークにいることです。あなたのアプリでこれらの問題に対処しましたか?あなたは本当に心配することはありません。 –

答えて

0

コメント欄の@ Manny264ですでに述べたように、このシナリオの現時点でのメカニズムやAPIはありません。ここでの問題は、あなたの目的のために処理されることが予想されるApp Serverのためです。このシナリオを自分で処理することもかなり期待されています。

登録トークンをApp Serverに送信しようとしたときに受け取った応答を確認し、失敗した場合は後で再度要求を再試行することをお勧めしますが、 タイマ機構などです。

あなたはおそらく何ができることは、Topics Messagingを利用することで、すべてのユーザーが自動的に加入することをユニバーサルトピックは(このシナリオでは、クライアントアプリケーションが正常に購読することができます)があり、もし今までに、アプリケーションサーバーであります再度オンラインになったときに、InstanceID APIを使用して購読トークンのリストを取得し、まだApp Serverに保存されていない新しいトークンがあるかどうかをチェックして比較してください。

選択はあなた次第です。私は、クライアントアプリケーション側で再試行の仕組みを実装すれば簡単だと思います。

関連する問題