Saltar al contenido

¿Qué es el token FCM en Firebase?

Posterior a mirar en diferentes repositorios y páginas de internet finalmente dimos con la respuesta que te compartimos más adelante.

Solución:

¿Qué es exactamente?

Un token FCM, o mucho más conocido como un registrationToken como en google-cloud-messaging. Como se describe en el MCG Documentos de FCM:

Una identificación emitida por los servidores de conexión de 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 conseguir ese token?

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


Respuesta antigua:

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 dirigirse a dispositivos individuales o crear grupos de dispositivos, deberá acceder a este token.

Puede acceder al valor del token al extender 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);

El onTokenRefreshcallback se activa 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 null 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 usando su método preferido. Consulte la referencia de la API de ID de instancia para obtener detalles completos sobre la API.

Aquí hay pasos simples para agregar este gradle:

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

No se necesitan permisos adicionales en el manifiesto como GCM. No se necesita un receptor para manifestarse como GCM. con FCM, com.google.android.gms.gcm.GcmReceiver se añade automáticamente.

Migre su servicio de escucha

Un servicio que se extiende InstanceIDListenerService ahora solo se requiere si desea acceder al token de FCM.

Esto es necesario si quieres

  • Administre tokens de dispositivos 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 suscripciones del servidor.

Agregar servicio en el manifiesto


    
        
    



    
        
    

Cambiar MyInstanceIDListenerService extender FirebaseInstanceIdServicey actualice el código para escuchar actualizaciones de tokens y obtener el token cada vez que se genere 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 GCM anteriores a Firebase
  2. Cómo forzar una actualización de token
  3. Cómo acceder a la ficha
  4. Cómo configurar base de fuego

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

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

Task task = FirebaseInstanceId.getInstance().getInstanceId();
task.addOnSuccessListener(new OnSuccessListener() 
      @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() 
@Override
public void onComplete(@NonNull Task 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 crearon 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);

Si te gusta el tema, tienes la libertad de dejar un artículo acerca de qué te ha parecido este enunciado.

¡Haz clic para puntuar esta entrada!
(Votos: 0 Promedio: 0)



Utiliza Nuestro Buscador

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *