web-dev-qa-db-ja.com

GCM登録IDの有効期限はありますか?

C2DM登録の有効期限が切れていることは知っていますが、登録IDを定期的に更新することになっています。これはGCMの場合ですか? Android GCMガイド(以下に表示)で次のコードを見ると、一度だけ実行してリフレッシュする必要はないように見えますが、確認したかっただけです。

final String regId = GCMRegistrar.getRegistrationId(this);
if (regId.equals("")) {
  GCMRegistrar.register(this, SENDER_ID);
} else {
  Log.v(TAG, "Already registered");
}
43
Mohamed Hafez

編集:この回答IS時代遅れ、私はありませんIDEA現在の行動は何ですか


自分で答えを見つけました。常に明示的に再登録する必要はありません ドキュメントの例に従って一度だけ

また、GCMおよびC2DMの以前のバージョンとは異なり、Google自体は登録自体を今すぐ更新しません:最初の登録から登録IDを取得したら、exceptをお勧めします。1つのケースでは、ユーザーが再登録する必要があります。新しいバージョンへのアップグレード(この場合は、上記のリンクの例でも処理されます):

アプリケーションが更新されると、新しいバージョンでの動作が保証されないため、既存の登録IDを無効にする必要があります。アプリケーションの更新時に呼び出されるライフサイクルメソッドはないため、この検証を実現する最良の方法は、登録IDを保存するときに現在のアプリケーションバージョンを保存することです。

41
Mohamed Hafez

はい、最終的に更新されると思います。公式ドキュメントから:

既存の登録IDは、次のようないくつかのシナリオで有効でなくなる可能性があります。com.google.Android.c2dm.intent.UNREGISTERインテントを発行して、アプリケーションが手動で登録解除する場合。アプリケーションが自動的に登録解除された場合、ユーザーがアプリケーションをアンインストールした場合に発生する可能性があります(保証はされません)。登録IDの有効期限が切れた場合。 Googleは登録IDの更新を決定する場合があります。これらすべての場合、サードパーティのサーバーからこの登録IDを削除し、メッセージの送信に使用するのを停止する必要があります。エラーコードがNotRegisteredの場合に発生します。

これは、サードパーティサーバーからGCMへのリクエストで発生し、エラーUnregistered Deviceでjson応答を返します。

これが発生したら、対応するIDを更新するのはあなた次第です。

http://developer.Android.com/guide/google/gcm/gcm.html

10
Iñigo