¿Debo solicitar un nuevo token cada vez que lance mi aplicación para Android?

Sé que en Android como en iOS y WP7 (¿ En qué plataformas móviles el "push token" no es permanente?) El token de empuje proporcionado al dispositivo puede cambiar.

Eso significa que debemos manejar esto requiriendo un nuevo token, al menos cada vez que nuestra aplicación se lance.

Sin embargo , esto viene a la contradicción completa a lo que he encontrado hasta ahora en los tutoriales de googles. (No puedo recordar dónde exactamente he encontrado este código, pero estoy bastante seguro de que fue proporcionado por google) El código se ve así:

//registering for push GCMRegistrar.checkDevice(this); GCMRegistrar.checkManifest(this); final String regId = GCMRegistrar.getRegistrationId(this); if (regId.equals("")) { GCMRegistrar.register(this, SENDER_ID); Log.i("****************","I just Registered!!"); } else { Log.i("****************","Already registered"); } 

El código anterior ejecutará el GCMRegistrar.register(this, SENDER_ID); Línea sólo una vez, la primera vez que se inicia la aplicación. Pero supongo que esto ir mal, ¿verdad? Porque si el token cambia, no hay manera de que nuestra aplicación vea que ya que requiere un token sólo una vez ..

EDITAR


En realidad acabo de encontrar exactamente donde estaba ese código. Echa un vistazo aquí: Guía de introducción

Estoy citando:

En el método onCreate (), agregue el código siguiente:

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

Cuando registra el dispositivo, se onRegistered(Context context, String regId): la función onRegistered(Context context, String regId): Acerca de esta función, el tutorial dice:

OnRegistered (Context context, String regId): Llamada después de recibir una intención de registro, pasa como parámetro el ID de registro asignado por GCM a ese par de dispositivo / aplicación. Normalmente, debe enviar el regid a su servidor para que pueda utilizarlo para enviar mensajes a este dispositivo.

Así que dice que debo enviar este id a mi servidor. Pero el código antes nos mostró que esta función se llamará sólo una vez! Entonces, ¿qué sucede cuando el token cambia? ¿Cómo voy a actualizarlo, a mi servidor? Creo que debería ejecutar esta función cada vez que se inicie la aplicación …

¿Me estoy perdiendo de algo? ¿Está mal el código? Cualquier pensamiento sería útil 🙂

Google dice que si el ID de registro cambia mientras estás registrado, se volverá a enviar la solicitud de registro, por lo que tu aplicación obtendrá el nuevo ID de registro en 'onRegistered' sin tener que solicitar un nuevo registro en cada lanzamiento.

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 la intención de com.google.android.c2dm.intent.REGISTRATION se puede llamar varias veces. Su aplicación de Android debe ser capaz de responder en consecuencia.

(Tomado de aquí )

Por lo tanto, el código anterior debe estar bien. En realidad, este código devolverá un ID de registro nulo si actualiza la versión de la aplicación, lo que provocará un nuevo registro.

Dicho esto, me parece más seguro registrarme cada vez que se lance la aplicación.

  • Notificación push de C2DM sin MQTT, UA en android api level <8
  • Push notificación de UrbanAirship no funciona con servidor en vivo (es decir, con la clave de producción) en android
  • Cómo crear una notificación push personalizada usando asp.net webservice?
  • Android push notificación servicio comparision
  • ¿Cómo desarrollar notificaciones push para Android sin usar mensajería en la nube de google?
  • GCM enviar imagen en lugar de mensaje
  • El dispositivo deja de recibir emisiones de GCM hasta que la red se conmuta
  • Notificación de emisión del receptor de difusión
  • ¿Cómo implementar funcionalidades como Facebook "New Story" característica?
  • En algún momento no recibe notificación push GCM en Mobile
  • PushPlugin registro va a errorhandler mostrando 'Clase no encontrada' con cordova 4.0.0 para plataforma android
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.