Desde el GCM docs:¿por qué los documentos de Gcm recomiendan invalidar el registro en la actualización de la aplicación?
Cuando se actualiza una aplicación, se debe invalidar su ID registro existente, 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. A continuación, cuando se inicia la aplicación, compare el valor almacenado con la versión actual de la aplicación . Si no coinciden, invalide los datos almacenados y comience nuevamente el proceso de registro.
Cuando los documentos afirman que "no se garantiza que funcione con la nueva versión" es que una limitación GCM o están especulando acerca de los posibles cambios en el comportamiento de mi aplicación de una versión a otra?
Desde el lado de la aplicación, puedo garantizar más o menos que las versiones sucesivas funcionarán correctamente con respecto a GCM y cualquier formato de mensaje específico de la aplicación que fabrique. ¿Todavía necesito volver a registrarme?
En caso afirmativo, ¿qué debería usar para detectar una "nueva versión": código de versión o nombre de la versión? Tengo entendido que se trata de "forma libre" y el desarrollador de la aplicación los establece según los valores que elija. Entonces, ¿qué ocurre si pongo una actualización de la aplicación en la tienda pero no cambio versionName o versionCode? ¿Debería volver a registrarme con GCM?
Parece que lo GCM realidad quiere es que la aplicación para volver a registrar cada vez que una nueva instalación se pone en marcha por primera vez (y cada vez que se puso en marcha sucesivamente hasta que el registro se ha completado), independientemente de los valores de versionName y versionCode. ¿Es eso una declaración precisa?
Gracias por esta buena información. Cuando se detecta un escenario de "primer lanzamiento", ¿es suficiente simplemente llamar a GCMRegistrar.register() nuevamente o debo intentar anular el registro de forma explícita? Supongo que lo primero, pero pensé que podría preguntar. – jph
simplemente llamando al registro nuevamente será suficiente, pero no se olvide de pasar el nuevo ID de registro a su servidor – marmor
He intentado probar su consejo. No lo vi. El ID de registro no cambió después de que instalé una nueva versión y registré el nuevo ID –