studio registro notificaciones firebaseinstanceidservice fcm android firebase firebase-cloud-messaging firebase-notifications

registro - token android studio



¿Qué es el token FCM en Firebase? (5)

Aquí hay pasos simples para agregar este gradle:

dependencies { compile "com.google.firebase:firebase-messaging:9.0.0" }

No se necesitan permisos adicionales en manifiesto como GCM. No se necesita receptor para manifestarse como GCM. Con FCM, com.google.android.gms.gcm.GcmReceiver se agrega automáticamente.

Migra tu servicio de escucha

Ahora se requiere un servicio que extienda InstanceIDListenerService solo si desea acceder al token FCM.

Esto es necesario si quieres

  • Administrar tokens de dispositivo para enviar mensajes a un solo dispositivo directamente, o Enviar mensajes a un grupo de dispositivos, o
  • Enviar mensajes al grupo de dispositivos, o
  • Suscriba dispositivos a temas con la API de administración de suscripción del servidor.

Agregar servicio en manifiesto

<service android:name=".MyInstanceIDListenerService"> <intent-filter> <action android:name="com.google.firebase.INSTANCE_ID_EVENT" /> </intent-filter> </service> <service android:name=".MyFirebaseInstanceIDService"> <intent-filter> <action android:name="com.google.firebase.INSTANCE_ID_EVENT"/> </intent-filter> </service>

Cambie MyInstanceIDListenerService para extender FirebaseInstanceIdService y actualice el código para escuchar las actualizaciones de token y obtener el token cada vez que se genera un nuevo token.

public class MyInstanceIDListenerService extends FirebaseInstanceIdService { ... /** * Called if InstanceID token is updated. This may occur if the security of * the previous token had been compromised. Note that this is also called * when the InstanceID token is initially generated, so this is where * you retrieve the token. */ // [START refresh_token] @Override public void onTokenRefresh() { // Get updated InstanceID token. String refreshedToken = FirebaseInstanceId.getInstance().getToken(); Log.d(TAG, "Refreshed token: " + refreshedToken); // TODO: Implement this method to send any registration to your app''s servers. sendRegistrationToServer(refreshedToken); } }

Para más información visite

  1. Cómo importar proyectos anteriores de GCM en Firebase
  2. Cómo forzar una actualización de token
  3. Cómo acceder al token
  4. Cómo configurar Firebase

En la nueva Firebase, en Notificación, han mencionado que el desarrollador puede enviar notificaciones a un dispositivo en particular. Para eso, en la consola pide un token FCM. ¿Qué es exactamente y cómo puedo obtener ese token?


Despreciaron el método getToken () en las notas de la versión a continuación. En cambio, tenemos que usar getInstanceId.

https://firebase.google.com/docs/reference/android/com/google/firebase/iid/FirebaseInstanceId

Task<InstanceIdResult> task = FirebaseInstanceId.getInstance().getInstanceId(); task.addOnSuccessListener(new OnSuccessListener<InstanceIdResult>() { @Override public void onSuccess(InstanceIdResult authResult) { // Task completed successfully // ... String fcmToken = authResult.getToken(); } }); task.addOnFailureListener(new OnFailureListener() { @Override public void onFailure(@NonNull Exception e) { // Task failed with an exception // ... } });

Para manejar el éxito y el fracaso en el mismo oyente, adjunte un OnCompleteListener:

task.addOnCompleteListener(new OnCompleteListener<InstanceIdResult>() { @Override public void onComplete(@NonNull Task<InstanceIdResult> task) { if (task.isSuccessful()) { // Task completed successfully InstanceIdResult authResult = task.getResult(); String fcmToken = authResult.getToken(); } else { // Task failed with an exception Exception exception = task.getException(); } } });

Además, la clase FirebaseInstanceIdService está en desuso y se les ocurrió el método onNewToken en FireBaseMessagingService como reemplazo de onTokenRefresh,

puede consultar las notas de la versión aquí, https://firebase.google.com/support/release-notes/android

@Override public void onNewToken(String s) { super.onNewToken(s); Use this code logic to send the info to your server. //sendRegistrationToServer(s); }


FirebaseInstanceIdService ahora está en desuso. debe obtener el token en el método onNewToken en FirebaseMessagingService.

Mira los documentos


Tengo una actualización sobre el "token de mensajería en la nube de Firebase" de la que podría obtener información.

Realmente quería saber sobre ese cambio, así que solo envié un correo al equipo de Soporte. El token de Firebase Cloud Messaging volverá a la clave del servidor pronto nuevamente. No habrá nada que cambiar. Podemos ver la clave del servidor nuevamente después de poco.


¿Qué es exactamente?

Un token FCM, o comúnmente conocido como registrationToken como en google-cloud-messaging . Como se describe en los documentos de GCM FCM :

Una identificación emitida por los servidores de conexión GCM a la aplicación cliente que le permite recibir mensajes. Tenga en cuenta que los tokens de registro deben mantenerse en secreto.

¿Cómo puedo obtener ese token?

Actualización : el token aún se puede recuperar llamando a getToken() , sin embargo, según la última versión de FCM, FirebaseInstanceIdService.onTokenRefresh() ha sido reemplazado por FirebaseMessagingService.onNewToken() , que en mi experiencia funciona de la misma manera que onTokenRefresh() hizo .

Vieja respuesta:

Según los documentos de FCM :

En el inicio inicial de su aplicación, el SDK de FCM genera un token de registro para la instancia de la aplicación cliente. Si desea apuntar a dispositivos individuales o crear grupos de dispositivos, deberá acceder a este token.

Puede acceder al valor del token extendiendo FirebaseInstanceIdService. Asegúrese de haber agregado el servicio a su manifiesto, luego llame a getToken en el contexto de onTokenRefresh y registre el valor como se muestra:

@Override public void onTokenRefresh() { // Get updated InstanceID token. String refreshedToken = FirebaseInstanceId.getInstance().getToken(); Log.d(TAG, "Refreshed token: " + refreshedToken); // TODO: Implement this method to send any registration to your app''s servers. sendRegistrationToServer(refreshedToken); }

OnTokenRefreshcallback se dispara cada vez que se genera un nuevo token, por lo que llamar a getToken en su contexto garantiza que esté accediendo a un token de registro actual y disponible. FirebaseInstanceID.getToken () devuelve nulo si el token aún no se ha generado.

Una vez que haya obtenido el token, puede enviarlo a su servidor de aplicaciones y almacenarlo utilizando su método preferido. Consulte la referencia de la API de ID de instancia para obtener detalles completos sobre la API.