私はここでドキュメントを読んでいます: http://developer.android.com/google/gcm/gs.html
この方法を参照してください:
private String getRegistrationId(Context context) {
final SharedPreferences prefs = getGCMPreferences(context);
String registrationId = prefs.getString(PROPERTY_REG_ID, "");
if (registrationId.length() == 0) {
Log.v(TAG, "Registration not found.");
return "";
}
// check if app was updated; if so, it must clear registration id to
// avoid a race condition if GCM sends a message
int registeredVersion = prefs.getInt(PROPERTY_APP_VERSION, Integer.MIN_VALUE);
int currentVersion = getAppVersion(context);
if (registeredVersion != currentVersion || isRegistrationExpired()) {
Log.v(TAG, "App version changed or registration expired.");
return "";
}
return registrationId;
}
SharedPreferences
ID が保存されていない場合、アプリのバージョンが変更された場合、または登録の有効期限が切れた場合は、空の文字列を返します。
そして、これら 3 つのケースすべてで、メソッドregisterBackground()
が呼び出されます。このメソッドは Web サーバーに HTTP リクエストを送信し、サーバーは登録 ID をデータベースに保存します。
ただし、これが発生すると、バージョンの更新または登録の有効期限が切れるたびに、サーバー上の TABLE 内に新しい行が作成されます。
クライアント側で登録ID変更イベントがいつ発生するかを取得する方法はありますか? これが発生した場合、 TABLE の行を更新するためです。