質問: gcm.register("xxxxx"); ``` 機種変の時など、バックアップツールなどを使ってアプリのデータを移管した場合、SharedPreferencesに保存されたregistrationIdも移管されます。 しかし、(機種変前に取得した)registrationIdでは、新しい端末へはプッシュ通知が送れません。 こういった場合、どのように対処すればよいでしょうか? Android Mからは、"full-backup-content"タグおよび"exclude"タグを使い、データ移管から特定データを除外方法もあるかと思いますが、targetSDKversion 23以上が対象なので、それ以前のバージョンの場合はどのように対処するのがベストでしょうか?
回答: おそらく質問当初と状況は変わっていると想いますが、 から引用します。 > > クライアント アプリの更新: クライアント アプリを更新するときは、既存の登録 ID > > が新しいバージョンで動作することが保証されないため、その ID を無効にする必要があります。おすすめの方法は、登録 ID > > を保存する際に現在のアプリのバージョンを格納し、クライアント > > アプリが起動された際に、この保存した値を現在のアプリのバージョンと比較することです。両者が一致しない場合は、保存されたデータを無効にして再度登録処理を開始します。 > > > バックアップと復元: クライアント アプリをバックアップする際は、登録 ID を保存しないでください。登録 ID は、クライアント > > アプリの復元時まで有効のままであるとは限らず、登録 ID が無効であればクライアント > > アプリも無効な状態になるからです(つまり、アプリでは登録済みであると認識されるものの、GCM ではその登録 ID > > が保存されなくなるため、アプリでメッセージが取得されなくなります)。アプリが初めてインストールされるときのように、登録プロセスを開始する方法がおすすめです。 > > > というわけで、機種変更前に取得したregstrationIdは無効になる可能性があるので、機種変更後にregistrationIdを取得・登録しなおしましょう。