登録IDの扱いに関する注意事項などで気になった点をオフィシャルサイトから拾い上げてみました。
登録IDに関して気になった記述
- 登録IDの発行は未登録の場合に限り行う
- 登録及び登録解除に失敗した場合、exponential back-off(失敗するたびに待ち時間を2倍)でリトライすべき
- バックアップ(GoogleのBackup and Restore機能を使っている場合)の際に、登録IDをバックアップすべきではない
- GCMサーバからのレスポンスに含まれる登録IDを確認し、異なっていればレスポンスに含まれるIDで既存のデバイスの登録 IDを置き換えるべき(Canonical IDという仕組み)
以下はマニュアルを翻訳したらしきサイトには書かれているが、Officialのサイトでは記述が見当たらなかった。どっちが本当?
- Google は登録 ID を定期的にリフレッシュする可能性がある
- 登録 ID は Android アプリケーション自体が明示的に登録を解除するまで、または、Google が Android アプリケーション用に登録 ID をリフレッシュするまで存続
登録ID解除
登録IDを自ら解除するのは稀。考えられるケースとしては以下。
- メッセージを受け取るのを停止したい場合
- 登録IDが漏洩した場合
但し、アプリケーションのバージョンアップ時には既存の登録IDを無効化するべき
- 登録IDを取得した際にアプリケーションのバージョンと共に保存
- 起動時にアプリケーションのバージョンを比較し、異なればUnregisterした後に再度登録すべき
自動的に解除されるケースはアプリケーションがアンインストールされた後
- ユーザがアプリケーションをアンインストールしたとき、登録 ID は GCM で自動的に登録解除されないが、GCMサーバがメッセージを送った際にアンインストールという通知を受けると登録が解除される
- NotRegisteredのエラーメッセージがGCMサーバから返される
参考URL