Os aplicativos devem chamar gcm.register () a cada sete dias para garantir identificações de registro válidas?

O código do lado do cliente noExemplo do GCM no site de desenvolvimento do Android padrão para chamargcm.register(SENDER_ID); após cada sete dias, verificando se o registro expirou usando a seguinte função:

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

O comentário acima da função implica que isso é usado para "evitar o cenário em que o dispositivo envia o registro para o servidor, mas o servidor o perde. Isso sugere quenosso servidores (não os servidores GCM) podem perder o ID de registro? Ou isso ocorre porque o ID de registro pode se tornar inválido no lado do GCM? Parece que isso é possível de acordo com o seguinte parágrafoa página de tópicos avançados do GCM:

Da mesma forma, você não deve salvar o ID de registro quando um aplicativo é submetido a backup. Isto é porqueo ID de registro pode se tornar inválido no momento em que o aplicativo é restaurado, o que colocaria o aplicativo em um estado inválido (ou seja, o aplicativo acha que está registrado, maso servidor e o CM não armazenam mais esse ID de registro- assim, o aplicativo não receberá mais mensagens).

Agradeço antecipadamente!

questionAnswers(2)

yourAnswerToTheQuestion