¿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 de envío cuando se carga un video nuevo en el canal de Youtube
  • Notificación de empuje que no recibe android
  • Google Cloud Messaging - CCS (XMPP) vs servidor HTTP
  • No se resuelve la integración de GCM y gcm_defaultSenderId
  • Cordova Push Plugin: onNotificationGMC no se activa y no se puede obtener regID
  • Versión mínima de servicios de Google Play para la notificación de emisión
  • Notificación Big Text Android GCM
  • GCM devuelve un tipo de mensaje nulo
  • ID de registro duplicado de Android para diferentes dispositivos
  • Clave de aplicación de desarrollo y secreto de aplicación para Android
  • ¿Hay alguna forma de notificaciones push en libGDX (proyectos Android e iOS)?
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.