¿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.
- Cómo gestionar los cambios de la ID de registro en Google Cloud Messaging en Android
- ¿En Blackberry el jugador androide apoya notificaciones del empuje o C2dm?
- ¿Hay alguna forma de notificaciones push en libGDX (proyectos Android e iOS)?
- Android-GCM: ¿Cómo cuidar a un usuario desconectado?
- Android push notificación cómo reproducir el sonido predeterminado
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 🙂
- No se puede resolver "com.google.android.gms.gcm.GcmReceiver"?
- Pushes no recibidos después de que la aplicación esté cerrada
- Notificación push de Android GCM para aplicaciones de localización
- ¿Por qué se prefiere usar GCM para notificaciones push?
- Error de autorización de GCM http 401
- Notificación de empuje cuando se está ejecutando la aplicación
- ¿Es necesaria una conexión a Internet en vivo para la notificación por push?
- No se puede resolver el símbolo 'GCMBroadcastReceiver' en Android Studio
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.
- Formato android edittext para mostrar espacios después de cada 4 caracteres
- Cómo cambiar el color del teclado virtual "Enter" / "Siguiente" botón en lollipop