98 votes

Qu'est-ce que le jeton FCM dans Firebase?

Dans le nouveau Firebase, sous Notification, ils ont mentionné que le développeur peut envoyer une notification à un appareil particulier. Pour cela, dans la console, il demande un jeton FCM. Qu'est-ce que c'est exactement et comment puis-je obtenir ce jeton ?

95voto

AL. Points 21726

Qu'est-ce que c'est exactement ?

Un jeton FCM, plus communément connu sous le nom de registrationToken comme dans google-cloud-messaging. Tel que décrit dans la documentation FCM docs :

Un identifiant émis par les serveurs de connexion GCM à l'application cliente qui lui permet de recevoir des messages. Notez que les jetons d'inscription doivent être gardés secrets.


Comment puis-je obtenir ce jeton ?

Mise à jour : Le jeton peut toujours être récupéré en appelant getToken(), cependant, selon la dernière version de FCM, le FirebaseInstanceIdService.onTokenRefresh() a été remplacé par FirebaseMessagingService.onNewToken() -- qui à mon expérience fonctionne de la même manière que onTokenRefresh() le faisait.


Ancienne réponse :

Selon la documentation FCM :

Lors du démarrage initial de votre application, le SDK FCM génère un jeton d'inscription pour l'instance de l'application cliente. Si vous souhaitez cibler des appareils individuels ou créer des groupes d'appareils, vous aurez besoin d'accéder à ce jeton.

Vous pouvez accéder à la valeur du jeton en étendant FirebaseInstanceIdService. Assurez-vous d'avoir ajouté le service à votre manifeste, puis appelez getToken dans le contexte de onTokenRefresh, et enregistrez la valeur comme illustré :

@Override
public void onTokenRefresh() {
    // Obtenez un nouveau jeton InstanceID mis à jour.
    String refreshedToken = FirebaseInstanceId.getInstance().getToken();
    Log.d(TAG, "Jeton rafraîchi : " + refreshedToken);

    // TODO: Implémentez cette méthode pour envoyer toute inscription à vos serveurs d'applications.
    envoyerInscriptionAuServeur(refreshedToken);
}

Le callback onTokenRefresh est déclenché chaque fois qu'un nouveau jeton est généré, donc appeler getToken dans son contexte assure que vous accédez à un jeton d'inscription actuel et disponible. FirebaseInstanceID.getToken() renvoie null si le jeton n'a pas encore été généré.

Une fois que vous avez obtenu le jeton, vous pouvez l'envoyer à votre serveur d'applications et le stocker en utilisant la méthode de votre choix. Consultez la référence de l'API Instance ID pour plus de détails sur l'API.

1 votes

Quand ce jeton FCM est-il généré pour la première fois ? Firebase authentication est-il nécessaire comme pour Firebase Storage ?

0 votes

Le registrationToken est généralement généré pour la première fois chaque fois que l'application est installée pour la première fois. Et en suivant le processus habituel. Vous devez envoyer le registrationToken généré à votre serveur d'application. Désolé, mais pouvez-vous élaborer sur Est-ce que l'authentification Firebase est nécessaire comme le stockage Firebase ?

1 votes

@arunrk - je vous recommande de consulter ceci : github.com/firebase/quickstart-android/tree/master/messaging

6voto

mesuk 08308 Points 16

Voici les étapes simples ajoutez cette gradle :

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

Aucune permission supplémentaire n'est nécessaire dans le manifeste comme pour GCM. Aucun récepteur n'est nécessaire dans le manifeste comme pour GCM. Avec FCM, com.google.android.gms.gcm.GcmReceiver est ajouté automatiquement.

Migrez votre service d'écoute

Un service étendant InstanceIDListenerService est maintenant requis seulement si vous souhaitez accéder au jeton FCM.

Cela est nécessaire si vous voulez

  • Gérer les jetons de périphérique pour envoyer un message à un seul périphérique directement, or Envoyer des messages à un groupe de périphériques, or
  • Envoyer des messages à un groupe de périphériques, or
  • S'abonner aux périphériques à des sujets avec l'API de gestion des abonnements côté serveur.

Ajoutez le service au manifeste

Modifiez MyInstanceIDListenerService pour étendre FirebaseInstanceIdService, et mettez à jour le code pour écouter les mises à jour du jeton et obtenir le jeton chaque fois qu'un nouveau jeton est généré.

public class MyInstanceIDListenerService extends FirebaseInstanceIdService {

  ...

  /**
   * Appelé si le jeton InstanceID est mis à jour. Cela peut se produire si la sécurité du
   * le jeton précédent avait été compromis. Notez que ceci est également appelé
   * lorsque le jeton InstanceID est généré initialement, donc c'est ici
   * que vous récupérez le jeton.
   */
  // [START refresh_token]
  @Override
  public void onTokenRefresh() {
      // Obtenez le jeton InstanceID mis à jour.
      String refreshedToken = FirebaseInstanceId.getInstance().getToken();
      Log.d(TAG, "Jeté rafraîchi : " + refreshedToken);
      // TODO: Implémentez cette méthode pour envoyer toute inscription à vos serveurs d'application.
      sendRegistrationToServer(refreshedToken);
  }

}

Pour plus d'informations, visitez

  1. Comment importer d'anciens projets GCM dans Firebase
  2. Comment forcer un rafraîchissement du jeton
  3. Comment accéder au jeton
  4. Comment configurer Firebase

5voto

nir Points 159

La classe FirebaseInstanceIdService est désormais obsolète. Vous devriez obtenir le jeton dans la méthode onNewToken de la classe FirebaseMessagingService.

Consultez la documentation

5voto

Manoj Kumar Points 177

Ils ont déprécié la méthode getToken() dans les notes de version ci-dessous. Au lieu de cela, nous devons utiliser 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) {
          // Tâche terminée avec succès
          // ...
          String fcmToken = authResult.getToken();
      }
});

task.addOnFailureListener(new OnFailureListener() {
@Override
public void onFailure(@NonNull Exception e) {
    // Tâche échouée avec une exception
    // ...
}
});

Pour gérer le succès et l'échec dans le même auditeur, attachez un OnCompleteListener:

task.addOnCompleteListener(new OnCompleteListener() {
@Override
public void onComplete(@NonNull Task task) {
    if (task.isSuccessful()) {
        // Tâche terminée avec succès
        InstanceIdResult authResult = task.getResult();
        String fcmToken = authResult.getToken();
    } else {
        // Tâche échouée avec une exception
        Exception exception = task.getException();
    }
}
});

Aussi, la classe FirebaseInstanceIdService est obsolète et ils ont proposé la méthode onNewToken dans FireBaseMessagingService comme remplacement de onTokenRefresh,

vous pouvez consulter les notes de version ici, https://firebase.google.com/support/release-notes/android

@Override
public void onNewToken(String s) {
    super.onNewToken(s);
    Utilisez cette logique de code pour envoyer les informations à votre serveur.
    //sendRegistrationToServer(s);
}

2voto

PM11 Points 44

J'ai une mise à jour concernant le "jeton de messagerie Cloud Firebase" dont j'ai pu obtenir une information.

Je voulais vraiment en savoir plus sur ce changement, j'ai donc envoyé un e-mail à l'équipe de support. Le jeton de messagerie Cloud Firebase reviendra bientôt à la clé du serveur. Il n'y aura rien à modifier. Nous pourrons bientôt voir à nouveau la clé du serveur.

0 votes

Tout ce qui va changer est l'étiquette dans le panneau de Messagerie Cloud des Paramètres du Projet. La valeur restera telle que vous la voyez actuellement. Désolé pour toute confusion que la nouvelle étiquette a pu causer.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X