24

メールサービス用のモバイルクライアントを開発しています。主な機能の 1 つは、メールボックス内の新しいメッセージに関する通知です。GCM アーキテクチャ ガイドラインで推奨されているように、新しいメッセージを受信したら Google サーバーにメッセージを送信する「プッシャー」を使用しています。問題は、テスト プロセスで、デバイスへのプッシュ通知の配信に関する重大な問題が報告されたことです。

質問: プッシュ通知の配信率、時間などに関する平均統計を監視する方法はありますか? または、アプリケーションの動作中にどれだけの通知が失われるかを効率的に監視するためのテスト環境をセットアップする方法の経験がある人はいますか?

Android GCM エクスペリエンスの向上に関連するすべての「ヒントとコツ」を歓迎します。

4

5 に答える 5

21

Google は、GCM サーバーでの処理に 1 ミリ秒もかからないと主張しています。Google の開発者による GCM に関する素晴らしいビデオについては、以下のリンクを参照してください。そして、今では会社のサーバーを使用してデバイスにプッシュ通知をほぼ瞬時に受け取ることができるので、信じられないほどです。

http://www.youtube.com/watch?v=YoaP6hcDctM

配信を保証するものではありませんが、Google の GCM サーバーに送信するメッセージで設定した期間に応じて、最大 4 週間メッセージの配信を試みます。メッセージの最終的な配信のために Google にデータを保持させたい場合は、メッセージが配信される予定だったときにデバイスがオフラインだった場合に備えて、デバイスに。

ただし、GCM メッセージが配信されない特定の条件があります。

  1. バックグラウンド データは、アカウントと同期の設定でオフになっています。
  2. 4.0.4.(ICS) より前では、デバイスの Google アカウントは GCM の前提条件です。ユーザーが Google アカウントにログインしていない可能性があります。
于 2012-12-27T18:04:23.013 に答える
6

これを行う唯一の方法は、受信したプッシュのタイムスタンプをサーバーに報告することです。

次のいずれかを実行できます

  1. GCM サービスで通知を受け取ったら、サーバーに報告してください。実装するには、プッシュ通知用のプッシュ ID を追加し、プッシュ データとともに ID を送信する必要があります。クライアントは、メッセージを受信したらタイムスタンプを取得し、通知 ID と一緒に送り返す必要があります。簡単な php スクリプトを実行できます (プッシュ通知を送信するときにsend-notificationの時刻を設定し、デバイスのタイムスタンプを受信するとreceive-notification を設定します。これは、データベース内の 2 つのフィールドに要約されます (太字). このアプローチでは、通知を受信したときにデバイスが接続されている可能性が非常に高く、サーバーへの要求が通過する可能性が非常に高いため、エラーについてはあまり気にしません。

  2. アプリで受信した通知とそのタイムスタンプのリストを保持します。同期が完了したら、同期操作でこのデータを送信します。これは最終的に同じアプローチですが、サーバーのデータは最初のアプローチほどリアルタイムではありません。ただし、クライアント側からの追加のリクエストは必要ありませんが、受信した通知とそのタイムスタンプを保存する必要があります。

全体として、通知IDを使用して送信された通知と、その送信時間 ( send-notification ) および受信時間 ( receive-notification )を追跡する必要があります。簡単なクエリを使用すると、このデータを分析できます。

于 2012-12-28T10:55:16.143 に答える
2

Google がこれらの統計情報を利用できるようにすることはありません。Android 開発者コンソールで利用できる統計がいくつかあります。これは、メッセージと登録の数のみを示しています。

独自のデータ収集を実装する必要がありますが、これはかなり簡単に実行できます。送信された各メッセージの時刻と ID を記録し、メッセージの受信時刻を Android クライアントにサーバーに報告させることができます。その後、サーバーにデータを保存し、必要に応じてクエリを実行できます。

于 2012-12-25T14:51:48.383 に答える