Должны ли приложения вызывать gcm.register () каждые семь дней, чтобы обеспечить действительные регистрационные идентификаторы?

Код на стороне клиента вПример GCM на сайте разработчика Android по умолчанию звонитgcm.register(SENDER_ID); через каждые семь дней, проверяя, истек ли срок регистрации, используя следующую функцию:

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;
}

Комментарий над функцией подразумевает, что это используется, чтобы «избежать сценария, когда устройство отправляет регистрацию на сервер, но сервер теряет ее.наш серверы (не серверы GCM) могут потерять регистрационный идентификатор? Или это потому, что регистрационный идентификатор может стать недействительным на стороне GCM? Похоже, что это возможно в соответствии со следующим пунктом вСтраница продвинутых тем GCM:

Точно так же не следует сохранять регистрационный идентификатор при резервном копировании приложения. Это потому чторегистрационный идентификатор может стать недействительным к моменту восстановления приложения, что приведет приложение в недопустимое состояние (то есть приложение думает, что оно зарегистрировано, носервер и CM больше не хранят этот регистрационный идентификатор- таким образом, приложение не будет получать больше сообщений).

Заранее спасибо!

Ответы на вопрос(2)

Ваш ответ на вопрос