Sollten Anwendungen alle sieben Tage gcm.register () aufrufen, um gültige Registrierungs-IDs sicherzustellen?
Der clientseitige Code in derGCM-Beispiel auf der Android-Entwickler-Site Standardmäßig wird angerufengcm.register(SENDER_ID);
Überprüfen Sie alle sieben Tage mithilfe der folgenden Funktion, ob die Registrierung abgelaufen ist:
public static final long REGISTRATION_EXPIRY_TIME_MS = 1000 * 3600 * 24 * 7;
/**
* Checks if the registration has expired.
*
* To avoid the scenario where the device sends the registration to the
* server but the server loses it, the app developer may choose to re-register
* after REGISTRATION_EXPIRY_TIME_MS.
*
* @return true if the registration has expired.
*/
private boolean isRegistrationExpired() {
final SharedPreferences prefs = getGCMPreferences(context);
// checks if the information is not stale
long expirationTime =
prefs.getLong(PROPERTY_ON_SERVER_EXPIRATION_TIME, -1);
return System.currentTimeMillis() > expirationTime;
}
Der Kommentar über der Funktion impliziert, dass dies verwendet wird, um das Szenario zu vermeiden, in dem das Gerät die Registrierung an den Server sendet, der Server sie jedoch verliertunsere Server (nicht die GCM-Server) verlieren möglicherweise die Registrierungs-ID? Oder liegt das daran, dass die Registrierungs-ID auf der GCM-Seite ungültig werden könnte? Es scheint, dass dies gemäß dem folgenden Absatz in möglich istdie GCM Advanced Topics-Seite:
Ebenso sollten Sie die Registrierungs-ID nicht speichern, wenn eine Anwendung gesichert wird. Das ist weilDie Registrierungs-ID könnte zum Zeitpunkt der Wiederherstellung der Anwendung ungültig werdenDies würde die Anwendung in einen ungültigen Zustand versetzen (das heißt, die Anwendung denkt, dass sie registriert ist, aberDer Server und der CM speichern diese Registrierungs-ID nicht mehr- Die Anwendung erhält daher keine weiteren Nachrichten.
Danke im Voraus!