GCM elimina el ID de registro antiguo si el usuario instala la aplicación de nuevo inmediatamente después de la desinstalación?
Llegué a saber que GCM marca el ID de registro para la eliminación cuando no puede enviar la próxima notificación de inserción.
Pero en mi caso tras la situación pasó a mi usuario.
- Mensajería en la nube de Google: limitación de 100 remitentes múltiples
- ¿Soporta Android la notificación push en tiempo real?
- Notificación Big Text Android GCM
- Cómo verificar el ID del remitente de GCM de deviceToken en Parse.com
- Gcm canonical id debe ser actualizado o no
Escenario :
1) Mi usuario ha instalado la aplicación y su dispositivo está registrado en GCM.
2) El mismo usuario desinstalado e instalado la aplicación de nuevo inmediatamente. La segunda vez se genera un nuevo ID de registro.
3) Estos dos identificadores de registro se almacenan en mi base de datos.
4) Ahora este usuario en particular está recibiendo dos notificaciones push.
Ahora tengo las siguientes preguntas:
Preguntas:
- ¿GCM eliminará el registro antiguo después de algún tiempo?
- Por favor, sugerirme cómo manejar esta situación?
- Después de actualizar los servicios de reproducción de Google a las notificaciones de envío 8.4.0 mostradas por ellos mismos
- Instalar jar con dependencias para el repositorio maven (Android gcm-server push library)
- ¿Qué es el ID de registro de GCM?
- Android - FirebaseApp / Firebase-Inicialización no se inicia
- Notificación Push de Android
- Problema de registro del dispositivo Gcm en android
- Enviar notificación automáticamente desde Firebase
- ID de registro canónico y formato ID de mensaje
De la documentación oficial:
Cómo se desinstala la desinstalación de la aplicación cliente
Una aplicación cliente se puede anular el registro automáticamente después de que se desinstale. Sin embargo, este proceso no ocurre inmediatamente. Lo que sucede en este escenario es:
- El usuario final desinstala la aplicación cliente.
- El servidor de aplicaciones envía un mensaje al servidor de conexión GCM.
- El servidor de conexión GCM envía el mensaje al cliente GCM en el dispositivo.
- El cliente GCM en el dispositivo recibe el mensaje y detecta que la aplicación cliente se ha desinstalado; Los detalles de detección dependen de la plataforma en la que se ejecuta la aplicación cliente.
- El cliente GCM en el dispositivo informa al servidor de conexión de GCM que la aplicación cliente se ha desinstalado.
- El servidor de conexión de GCM marca el token de registro para la eliminación.
- El servidor de aplicaciones envía un mensaje a GCM.
- El GCM devuelve un mensaje de error NotRegistered al servidor de aplicaciones.
- El servidor de aplicaciones debe eliminar el token de registro.
Tenga en cuenta que puede tardar un tiempo en que el token de registro se quite completamente de GCM. Por lo tanto, es posible que los mensajes enviados durante la etapa 7 anterior obtengan un ID de mensaje válido como respuesta, aunque el mensaje no se entregue a la aplicación cliente. Eventualmente, el token de registro se eliminará y el servidor recibirá un error NotRegistered, sin que se requiera ninguna acción adicional del servidor de aplicaciones.
Sin embargo, al parecer puede suceder que todavía obtiene la notificación para el ID de registro antiguo, como los usuarios de estado en otras preguntas:
- La aplicación recibe notificación duplicada mediante GCM después de reinstalar
- GCM de Android y múltiples fichas
- https://stackoverflow.com/questions/27845298/gcm-deleting-app-and-reinstalling-multiple-notifications
- El anular el registro y el nuevo registro de mensajes GCM hace que dos regId sean válidos. ¿Es esto como se pretende?
- ¿Los viejos ficheros GCM siguen activos incluso después de una desinstalación?
Para este problema, existe una funcionalidad denominada "ID canónica":
ID canónica
Si un error en la aplicación cliente activa varios registros para el mismo dispositivo, puede ser difícil reconciliar el estado y la aplicación cliente puede terminar con mensajes duplicados.
La implementación de identificaciones canónicas puede ayudarle a recuperarse más fácilmente de estas situaciones. Un ID de registro canónico es el token de registro del último registro solicitado por la aplicación cliente. Éste es el ID que el servidor debe utilizar al enviar mensajes al dispositivo.
Si intenta enviar un mensaje con un token de registro antiguo, GCM procesará la solicitud como de costumbre, pero incluirá el ID canónico en el campo registration_id de la respuesta. Asegúrese de reemplazar el token de registro almacenado en su servidor con este ID canónico, ya que eventualmente el token de registro antiguo dejará de funcionar.