8

GCM を Android アプリケーションに統合し始めました。スタートアップ チュートリアルの助けを借りて、サンプル デモをセットアップしました。また、サーバーがメッセージを GCM に送信するときに受信するさまざまな応答ステータスも理解しました。これは、サーバーと GCM サーバー間の通信のステータスを示していると思います。

私の質問は、GCM サーバーと Android アプリケーション間の通信のステータスを取得する方法はありますか? 基本的には、意図したメッセージが正常に配信されたかどうかを示す確認応答です。また、time_to_live フラグが設定されていない限り、デフォルトのタイムアウトは 4 週間であることも読みました。これにより、GCM がキューを維持し、メッセージの配信を確実に保証することが理解できます。

ただし、信頼性を確保するために、サードパーティのサーバーとして、同じメッセージの送信を再試行する必要がありますか (GCM インフラストラクチャによって処理されていない場合)。再試行を処理する必要がある場合、失敗を判断する方法は?

私が持っている1つの方法は、プッシュIDを定義してメッセージと一緒に送信することです。受信すると、AndroidアプリはそれぞれのプッシュIDでサーバーを報告します。指定された時間内に応答が受信されない場合、サーバーはメッセージの送信を再試行します。このアプローチは、投稿の 2 番目の回答で定義されており、GCM (特に QA チーム) にかかる時間を監視するのに役立ちます。

4

2 に答える 2

2

GCM サーバーからその情報を取得できるとは思えません。これは、メッセージを正常に受信するクライアント アプリとサーバーの間で、別の通信方法 (説明したとおり) に依存する必要があることを意味します。

(ご存じのように) GCM サーバーから得られる応答は、単純に次のいずれかを知らせます

success: Number of messages that were processed without an error.

また

failure: Number of messages that could not be processed.

つまり、どの登録 ID が適切に処理されたか (たとえば、有効な値、GCM にまだ登録されているか) はわかりますが、メッセージが実際のデバイスに正常に配信されたかどうかはわかりません。

于 2013-01-03T15:35:20.703 に答える
2

Google の GCM ドキュメントによると....これは役に立つかもしれません:

http://developer.android.com/google/gcm/ccs.html#receipts

于 2014-08-07T07:26:18.753 に答える