8

C2DM を使用してプッシュ通知を受信するアプリケーションを開発しています。C2DM 回路全体 (クライアントとサーバーの両方) を実装しましたが、正常に動作しています。

現在、私のアプリケーションには、C2DM 登録をブートストラップするためのボタンがあります。Google から登録 ID トークンを受け取ると、アプリ サーバーで Web サービスを呼び出して、デバイスを登録 ID に関連付けます。

アプリケーションに認証を実装しようとしていますが、C2DM 登録の処理に関していくつか質問があります。

  1. クライアント アプリケーション (つまり Android アプリケーション) には、最初の画面としてログイン画面が表示されるため、ユーザーは資格情報を入力できます。資格情報が検証されたらすぐに、C2DM 登録を呼び出して、ユーザーが登録 ID トークンに関連付けられるようにする予定です。これでよろしいですか?アプリケーションの後の実行では、ユーザーが資格情報を再度入力する必要がないように、おそらく資格情報または何らかのトークンを保存します。アプリケーションの起動時に C2DM 登録も起動する必要がありますか?
  2. Google が最終的に登録 ID を更新する可能性があることは承知しています。登録 ID も定期的に更新することをお勧めしますか? もしそうなら、いつが適切であるべきですか?登録 ID トークンの有効期限はありますか?
  3. クライアントとサーバー間で登録 ID が同期していないというまれなケースで何が起こるか (たとえば、新しい登録 ID がクライアントに到着し、その途中で古い登録 ID を持つサーバーで新しいイベントが発生し、登録 ID がサーバーに到着します)? Google はこのケースを処理しますか? アプリ サーバーでこのケースを処理する必要がありますか?
  4. 新しい登録 ID が Google から届いたときにサーバーにアクセスできない場合はどうなりますか? バックオフして、アラームを再試行するようにスケジュールする必要がありますか?
  5. これで他に何か落とし穴があると思いますか?
4

2 に答える 2

6

1) できるだけ早く C2DM 登録を開始します。特に何もありませんが、リクエストは非同期なので、早めに起動することで登録 ID を早く取得できます。ただし、アプリが起動するたびに登録を開始する必要はありません。一度で十分です。

2) Google が登録 ID を更新することを決定するたびに、それをデバイスに送信します。登録 ID を初めて受信したときと同じ手順を実行する必要があります。つまり、サーバーに伝達します。

3 & 4) このドキュメントを参照することをお勧めします。登録IDをサーバーに送信し、試行を続けることを確認する必要があるという事実を強調しています. ここで、reg ID が更新され、サーバーがまだ古い ID を持っている場合、デバイスにメッセージを送信できないと仮定します。InvalidRegistration のエラー コードで 200OK を受け取ります。これは、(欠落しているか) 登録 ID が正しくないことを意味します。

5) 多くはコメントできません。アプリケーションの設計に依存すると言えます。ただし、注目すべきことの 1 つは、C2DM はまだベータ版であるため、長期的には状況が異なることを期待していることです。

于 2011-05-03T05:07:49.117 に答える
0
  1. すでに電話にある Google アカウントの選択をユーザーに促してみてください。http://code.google.com/p/chrometophone/source/checkoutはこれを示しています。getGoogleAccounts() などについては、SetupActivity.java を参照してください。
于 2011-09-16T02:04:57.853 に答える