我在这里阅读文档: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;
}
当应用程序中没有保存 idSharedPreferences
或版本更改或注册过期时,它返回空字符串。
在所有这三种情况下,registerBackground()
都会调用一个方法。此方法向我的 Web 服务器发出 HTTP 请求,服务器将注册 ID 存储在数据库中。
但如果发生这种情况,每次版本更新或注册到期都会在我的服务器上的 TABLE 内创建一个新行。
有没有办法在客户端发生注册ID更改事件时获得?因为如果发生这种情况,我将更新 TABLE 中的行。