43

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

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

2 に答える 2

41

編集:この答えは時代遅れです、私は現在の行動が何であるかについての考えを持っていません


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

また、以前のバージョンのGCMやC2DMとは異なり、Google自体は登録自体を更新しません。最初の登録から登録IDを取得したら、1つの場合を除いて、問題はありません。次の場合は、再登録する必要があります。ユーザーが新しいバージョンにアップグレードします(この場合は、上記のリンクの例でも処理されます)。

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

于 2012-07-21T08:06:35.587 に答える
10

やがてリフレッシュされると思います、はい。公式ドキュメントから:

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

これは、サードパーティサーバーからGCMへのリクエストで発生する可能性があり、サードパーティサーバーはエラーUnregisteredDeviceでjson応答を返します。

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

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

于 2012-07-21T08:04:34.587 に答える