10

GCMドキュメントから:

アプリケーションが更新されると、新しいバージョンでの動作が保証されないため、既存の登録 ID を無効にする必要があります。アプリケーションの更新時に呼び出されるライフサイクル メソッドがないため、この検証を行う最善の方法は、登録 ID の保存時に現在のアプリケーション バージョンを保存することです。次に、アプリケーションの起動時に、格納された値を現在のアプリケーション バージョンと比較します。一致しない場合は、保存されたデータを無効にして、登録プロセスをやり直してください。

「新しいバージョンでの動作は保証されていません」とドキュメントに記載されている場合、それは GCM の制限ですか、それともバージョンごとのアプリの動作の潜在的な変更について推測していますか?

アプリ側からは、GCM および私が考案したアプリ固有のメッセージ形式に関して、後続のバージョンが適切に機能することを多かれ少なかれ保証できます。まだ再登録する必要がありますか?

その場合、「新しいバージョン」を検出するには、バージョン コードとバージョン名のどちらを使用すればよいですか? 私の理解では、これらは「自由形式」であり、アプリ開発者が選択した値に設定します。では、アプリの更新をストアに入れても、versionName や versionCode を変更しない場合はどうなるでしょうか。GCM に再登録する必要がありますか?

GCMが実際に望んでいるのは、versionName と versionCode の値に関係なく、新しいインストールが初めて起動されるたびに (および登録が完了するまで連続して起動されるたびに)、アプリが再登録されるようです。それは正確な声明ですか?

4

2 に答える 2

13

どこで読んだか覚えていませんが、アプリがインストールされていないときにデバイスがプッシュされると、Google が登録 ID を無効にすることに気付きました。

これは、アプリが実際にアンインストールされている場合は理にかなっていますが、デバイスが実際に更新の途中であった場合は、すぐにアンインストールして再インストールするため、Google は登録を無効にする必要があると誤って判断する可能性があります。

ソリューションは、アプリの登録 ID がアクティブであることを保証するために、更新後の最初の起動時に再登録するようです。

バージョン コードは実際には自由に選択できる数字ですが、新しいバージョンを Google Play に公開するたびに数字を増やす必要があります。これにより、その数字が変更されたかどうかを確認し、アプリが更新されたことを確認して、登録を更新する必要があります。

編集:

C2DMこれはの後継者にも関連してGCMおり、この動作とコードを適切に記述する方法を説明するドキュメントが多数あります。

すべての詳細については、http : //developer.android.com/google/gcm/client.htmlを参照してください。

具体的には、このコードではgetRegistrationId、バージョン コードが変更されてクライアントが再登録を余儀なくされた場合に空の文字列が返されます。

        if (checkPlayServices()) {
            gcm = GoogleCloudMessaging.getInstance(this);
            regid = getRegistrationId(context);

            if (regid.isEmpty()) {
                registerInBackground();
            }
        } else {
            Log.i(TAG, "No valid Google Play Services APK found.");
        }
于 2012-07-10T22:26:34.977 に答える
0

バージョンコードを使用して、アプリの更新を検出します。バージョンコードは、Google Playストアに新しいバージョンを送信するたびに強制的に変更されるため、アプリのバージョンを検出するためにバージョンコードを信頼できます。

于 2013-03-22T22:47:32.953 に答える