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

dans la nouvelle base Firebase, sous Notification, ils ont mentionné que le développeur peut envoyer une notification à un dispositif particulier. Pour cela, en console il demande un jeton FCM. Quel est-il exactement et comment puis-je obtenir le jeton?

28
demandé sur AL. 2016-06-07 08:43:31

5 réponses

Qu'est-ce que c'est exactement?

un jeton FCM, ou plus communément appelé un registrationToken comme dans . Comme décrit dans le GCM docs :

un ID émis par les serveurs de connexion GCM à l'application client qui lui permet de recevoir des messages. Notez que les jetons d'enregistrement doivent être tenus secrets.


Comment puis-je avoir ce jeton?

Update : le token peut encore ê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, d'après mon expérience, fonctionne de la même manière que onTokenRefresh() a fait .


ancienne réponse:

conformément au FCM docs :

au démarrage initial de votre application, le SDK FCM génère un token d'enregistrement pour l'instance de l'application client. Si vous voulez cibler des appareils individuels ou créer des groupes de périphériques, vous aurez besoin d'accéder à ce token.

vous pouvez accéder à la valeur du token en étendant FirebaseInstanceIdService. Assurez-vous que vous avez ajouté à votre service manifeste, puis appelez getToken dans le contexte d'onTokenRefresh, et enregistrez la valeur comme indiqué:

@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);
}

l'onTokenRefreshcallback démarre chaque fois qu'un nouveau token est généré, donc appeler getToken dans son contexte garantit que vous accédez à un token d'enregistrement disponible. FirebaseInstanceID.getToken () renvoie nul si le token n'a pas encore été généré.

après avoir obtenu le token, vous pouvez l'Envoyer à votre serveur app et conservez-le en utilisant votre méthode préférée. Voir la référence de L'API D'Instance ID pour plus de détails sur L'API.

40
répondu AL. 2018-08-17 11:18:14

Voici des étapes simples ajouter ce Grad:

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

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

Migrer votre service d'écoute

un service prolongeant InstanceIDListenerService est maintenant requis seulement si vous voulez accéder au jeton FCM.

cela est nécessaire si vous voulez à

  • Gérer les jetons de dispositif pour envoyer directement un message à un seul dispositif, ou Envoyer des messages au groupe de périphériques, ou
  • envoyer des messages au groupe de périphériques, ou
  • abonnez-vous à des appareils pour des sujets avec L'API de gestion des abonnements du serveur.

ajouter Service dans le manifeste

<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>

modifier MyInstanceIDListenerService pour étendre FirebaseInstanceIdService , et mettre à jour le code pour écouter les mises à jour de token et récupèrent le token chaque fois qu'un nouveau token est généré.

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);
  }

}

pour plus d'information, visitez

  1. Comment importer des anciens GCM Projets en Firebase
  2. Comment forcer un jeton d'actualisation
  3. comment accéder au token
  4. comment configurer firebase
5
répondu Md. Sajedul Karim 2017-05-23 12:18:14

FirebaseInstanceIdService est maintenant déprécié. vous devriez obtenir le jeton dans la méthode unnewtoken dans le service de gestion de base de feu.

consultez les docs

3
répondu nir 2018-07-05 15:22:07

j'ai une mise à jour sur" Firebase Cloud Messaging token " que je pourrais obtenir une information.

je voulais vraiment savoir à propos de ce changement alors j'ai envoyé un mail à L'équipe de soutien. Le jeton de messagerie Cloud Firebase va bientôt revenir à la clé du serveur. Il n'y aura rien à changer. Nous pouvons voir la clé du serveur à nouveau après bientôt.

2
répondu PM11 2018-04-02 10:44:42

ils ont déprécié la méthode getToken() dans les notes de version ci-dessous. Au lieu de cela, nous devons utiliser gettinstanceid.

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
    // ...
}
});

Pour gérer le succès et l'échec dans le même auditeur, joindre une 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();
    }
}
});

aussi, la classe FirebaseInstanceIdService est dépréciée et ils sont venus avec une nouvelle méthode parlée dans FireBaseMessagingService en remplacement de onTokenRefresh,

vous pouvez vous référer aux notes de version ici, 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);
}
2
répondu Manoj Kumar 2018-07-12 10:32:04