Pruebas GCM, ¿cómo provocar una respuesta del servidor GCM con un canonical_id?

He implementado con éxito una aplicación cliente / servidor de Android GCM. Mi servidor de aplicaciones tiene una base de datos de pares device / registration_id. Los mensajes se envían a los dispositivos a través de páginas web PHP accesibles. Estoy tratando de escribir el manejo de errores en el lado del servidor, específicamente el caso donde la respuesta contiene un canonical_id. Los documentos del desarrollador son bastante claros sobre lo que se debe hacer y por qué tal respuesta podría producirse:

ID canónica

En el lado del servidor, siempre y cuando la aplicación se comporte bien, todo debería funcionar normalmente. Sin embargo, si un error en la aplicación activa varios registros para el mismo dispositivo, puede ser difícil reconciliar el estado y puede terminar con mensajes duplicados.

GCM proporciona una instalación denominada "ID de registro canónico" para recuperarse fácilmente de estas situaciones. Un ID de registro canónico se define como el ID del último registro solicitado por la aplicación. Éste es el ID que el servidor debe utilizar al enviar mensajes al dispositivo.

Si más adelante intenta enviar un mensaje utilizando un ID de registro diferente, GCM procesará la solicitud como de costumbre, pero incluirá el ID de registro canónico en el campo registration_id de la respuesta. Asegúrese de reemplazar el ID de registro almacenado en su servidor con este ID canónico, ya que eventualmente el ID que está utilizando dejará de funcionar.

Así que dentro de mi aplicación cliente de Android tengo un botón de desarrollo único que registrará el dispositivo con GCMRegistrar.register () una segunda vez sin molestarse en anular su registro primero. Había asumido que esto me daría un registration_id diferente de la primera vez que lo registré, y que enviar un mensaje al dispositivo desde la web (tal vez usando el antiguo id) me daría una respuesta con un canonical_id.

Sin embargo, el segundo registro devuelve exactamente el mismo reg_id que la primera vez.

Por lo tanto el envío de un mensaje a través de PHP en mi servidor no mostrará un canonical_id en la respuesta. Realmente necesito probar la situación donde se devuelve un canonical_id, indicando que necesito actualizar mi base de datos ya que mis habilidades de PHP no son las mejores!

Así que cualquier idea de cómo podría provocar tal respuesta sería agradecida recibida

Actualización: Acabo de intentar desinstalar la aplicación desde el teléfono y volver a instalarla. Todavía obtengo el mismo reg_id.

Yo respondí esa pregunta – aquí . Puedes intentar seguir los pasos que usé para obtener una identificación de registro canónica. Se trata de desinstalar la aplicación, pero tal vez no ha hecho todos los pasos que describo allí.

Mi comprensión es que la identificación canónica que necesita la actualización vendrá solamente del servidor. Esto sólo ocurrirá si los servidores GCM detectan que tienen dos identificadores para un solo dispositivo.

Esto sólo puede suceder si hay una condición de carrera de algún tipo, u otro error que es difícil de reproducir. Entiendo su anhelo de probar este escenario, pero he estado usando GCM desde que salió de la versión beta y nunca he visto una sustitución de la identificación canónica a través de venir.

  • No se puede resolver el símbolo 'GCMBroadcastReceiver' en Android Studio
  • ¿Podemos usar VectorDrawable o VectorXML como iconos para notificaciones push en android?
  • Notificación de emisión del receptor de difusión
  • Mostrar notificación push sólo cuando la aplicación no está ejecutando android
  • Enviar notificaciones push a Android
  • Obtenga el ID de registro canónico de GCM sin enviar un mensaje
  • GCM notificación de empuje funciona después de la aplicación de parada de la fuerza?
  • Phonegap: cómo reproducir sonido en android para una notificación push
  • Gcm GoogleCloudMessaging nueva implementación
  • Enviar notificación push GCM por java
  • ¿Por qué es necesario iniciar sesión en Google para que GCM funcione para dispositivos inferiores a 4.0.4?
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.