web-dev-qa-db-fra.com

Quoi utiliser maintenant que FirebaseInstanceId.getInstance (). GetToken () est obsolète

J'aimerais savoir quel serait le bon moyen d'obtenir un jeton Firebase pour envoyer une notification Push maintenant que getToken () est obsolète.

61

Comme documentation dit:

Cette méthode était obsolète . En faveur de getInstanceId ().

getInstanceId () renverra une tâche avec et InstanceIdResult. Comme ça:

 FirebaseInstanceId.getInstance().getInstanceId().addOnSuccessListener( new OnSuccessListener<InstanceIdResult>() {                    
                @Override
                public void onSuccess(InstanceIdResult instanceIdResult) {
                      String deviceToken = instanceIdResult.getToken();
                      // Do whatever you want with your token now
                      // i.e. store it on SharedPreferences or DB
                      // or directly send it to server 
                }
});

UPDATE: Bien qu'il soit vrai que cette approche remplacera littéralement l'utilisation de FirebaseInstanceId.getInstanceId (). getToken () , cela ne résout pas le fait que FirebaseInstanceIdService est également obsolète, ce qui nous laisse une autre question: où pour l'utiliser? Il peut être utilisé dans n'importe quel contexte d'activité pour lequel le jeton sera toujours renvoyé. Mais que faire si nous voulons obtenir le jeton uniquement lors de la création et quand il est rarement mis à jour? Pour cela, vous devez remplacer la nouvelle méthode onNewToken de notre ancienne FirebaseMessagingService : (Oui, "Messaging", pas "InstanceId")

@Override
public void onNewToken(String s) {
    super.onNewToken(s);
    String deviceToken = s;
    // Do whatever you want with your token now
    // i.e. store it on SharedPreferences or DB
    // or directly send it to server 
}

De cette façon, le code restera plus maigre et ne sera même pas nécessaire d’utiliser la première approche.

107
Facundo

FirebaseInstanceIdService était obsolète.!

remplacez simplement onNewToken() dans FirebaseMessagingService

public class LatestFirebaseMessagingService extends FirebaseMessagingService {

@Override
public void onNewToken(String mToken) {
    super.onNewToken(mToken);
    Log.e("TOKEN",mToken);
}

@Override
public void onMessageReceived(RemoteMessage remoteMessage) {
    super.onMessageReceived(remoteMessage);
}} 

InAndroidManifest.xml

<service
        Android:name=".LatestFirebaseMessagingService"
        Android:stopWithTask="false">
        <intent-filter>
            <action Android:name="com.google.firebase.MESSAGING_EVENT" />
        </intent-filter>
</service>

getToken() Ceci est également déconseillé.!

si vous avez besoin d’obtenir des jetons dans votre activité, utilisez le code ci-dessous.

FirebaseInstanceId.getInstance().getInstanceId().addOnSuccessListener( MyActivity.this,  new OnSuccessListener<InstanceIdResult>() {
     @Override
     public void onSuccess(InstanceIdResult instanceIdResult) {
           String mToken = instanceIdResult.getToken();
           Log.e("Token",mToken);
     }
 });
26
KUSHA B K