2012-07-21 24 views
43

Sé que los registros C2DM caducan, y se supone que debe actualizar periódicamente el ID de registro. Es este el caso con GCM? Al observar el siguiente código en la guía de Android GCM (que se muestra a continuación), parece que solo lo hace una vez y no necesita actualizar, pero no veo explícitamente escrito en cualquier lugar, así que solo quería comprobar.¿La identificación de registro de GCM expira?

final String regId = GCMRegistrar.getRegistrationId(this); 
if (regId.equals("")) { 
    GCMRegistrar.register(this, SENDER_ID); 
} else { 
    Log.v(TAG, "Already registered"); 
} 
+0

similares: http://stackoverflow.com/questions/16838654/handling-registration-id-changes-in-google-cloud-messaging-on-android – trante

Respuesta

41

EDITAR: Esta respuesta es la forma de existencia, no tengo idea de cuál es el comportamiento actual es


he encontrado la respuesta a mí mismo. No necesita volver a registrarse explícitamente todo el tiempo, just once according to the example in the docs.

Además, a diferencia de las versiones anteriores de GCM y C2DM, el propio Google no no actualizar el registro en sí ahora: una vez que tenga el ID de registro desde el registro inicial que son buenos para ir, excepto de un caso : usted todavía tiene que volver a registrarse cuando el usuario actualiza a una nueva versión (este caso también se maneja en el ejemplo en el siguiente enlace):

cuando se actualiza una aplicación, se debe invalidar su existente ID de registro, ya que no se garantiza que funcione con la nueva versión. Debido a que no se llama a ningún método de ciclo de vida cuando la aplicación es actualizada, la mejor forma de lograr esta validación es almacenando la versión actual de la aplicación cuando se almacena una ID de registro.

+0

Pero, ¿cómo generar el registro id mannn ????? –

+1

@AndroidKiller: lea a través de los documentos: http://developer.android.com/google/gcm/index.html –

+0

hey @MohamedHafez.Su primer párrafo proviene de la documentación de C2DM y no de GCM, lo que significa (creo) que no se aplica a GCM. Esto hace que tu respuesta sea un poco engañosa. Thx – AndroidGecko

10

Creo que se actualiza con el tiempo, sí. A partir de los documentos oficiales:

un ID de registro existente puede dejar de ser válida en una serie de escenarios, incluyendo: Si la aplicación anula el registro de forma manual mediante la emisión de una intención com.google.android.c2dm.intent.UNREGISTER. Si la aplicación se cancela automáticamente, lo que puede suceder (pero no se garantiza) si el usuario desinstala la aplicación. Si el ID de registro caduca. Google puede decidir actualizar los ID de registro. Para todos estos casos, debe eliminar este ID de registro del servidor de terceros y dejar de usarlo para enviar mensajes. Ocurre cuando el código de error no se registra.

Esto podría ocurrir en una solicitud a GCM desde el servidor de 3 ª parte, que devuelve una respuesta JSON con el error de dispositivo no registrado .

Una vez que esto ocurra, le corresponderá actualizar los ID correspondientes.

http://developer.android.com/guide/google/gcm/gcm.html

+0

lo tanto, es salvar a sólo comprobar si el elemento tiene cambiado en mi 'RegistationIntentService'? Puedo almacenar el token en las preferencias compartidas y verificarlo cada vez para ver si ha cambiado. – Zapnologica

Cuestiones relacionadas