ID de registro de GCM cambiado

Desarrollé una aplicación que usaba tecnología GCM y todo está bien.

Observé que la identificación de registro del dispositivo cambia después de un período de tiempo y esto ha causado un problema en mi aplicación porque mi aplicación depende de la ID de registro.

Entonces, ¿cómo puedo obtener un ID de registro fijo para los clientes?

Leí los 2 motivos aquí cuando su ID de registro de GCM podría cambiar:

  1. Deberá volver a registrar cada dispositivo cada vez que actualice su aplicación.
  2. También deberá volver a registrar un dispositivo si la versión de Android que está ejecutando se ha actualizado

PD: la referencia anterior de la respuesta anterior se ha eliminado de la página de Google, por lo que puede que ya no sea válida

Si ve el segundo punto debajo del encabezado Habilitar GCM en la página Descripción general de la architecture , dice:

Tenga en cuenta que Google puede actualizar periódicamente el ID de registro, por lo que debe diseñar su aplicación de Android con el entendimiento de que el bash com.google.android.c2dm.intent.REGISTRATION se puede invocar varias veces. Tu aplicación Android debe poder responder en consecuencia.

Por lo tanto, para manejarlo, debe tener un Broadcast Listener que pueda manejar el bash com.google.android.c2dm.intent.REGISTRATION , que Google envía a la aplicación cuando tiene que actualizar el ID de registro. El receptor de difusión tendrá el método onReceive con un Intento. Desde la intención, puede obtener el Bundle con el que puede extraer el nuevo ID de registro de Google. Puede guardar eso y enviarlo al servidor de la tercera parte para reemplazar su ID registrada anterior para ese usuario.

También puede ver esta respuesta a la pregunta en la API de GoogleCloudMessaging, cómo manejar la renovación o el vencimiento de la identificación de registro. .

Discusión sobre ¿Deberían las aplicaciones llamar a gcm.register () cada siete días para garantizar los ID de registro válidos? la pregunta también podría ser de alguna utilidad.

Espero que esto te ayude a entender cómo manejarlo.

La actualización “periódica” nunca ocurrió, y la actualización de registro no se incluye en la nueva biblioteca de GCM.

La única causa conocida para el cambio de ID de registro es el viejo error de las aplicaciones que se cancelan automáticamente si reciben un mensaje mientras se actualizan. Hasta que este error no se solucione, las aplicaciones aún deben llamar a register () después de la actualización, y hasta ahora el ID de registro puede cambiar en este caso. Llamar a unregister () explícitamente generalmente también cambia la ID de registro.

La sugerencia / solución alternativa es generar su propio identificador aleatorio, guardado como una preferencia compartida, por ejemplo. En cada actualización de la aplicación puede cargar el identificador y la nueva identificación de registro. Esto también puede ayudar a rastrear y depurar los cambios de actualización y registro en el lado del servidor.