J'essayais de faire fonctionner le FCM dans mon application ces derniers jours, et j'ai vu que la fonction onTokenRefreshed () et FirebaseInstanceIdService en général, étaient obsolètes. J'ai donc suivi quelques documentations et tutoriels sur Firebase en ligne, mais aucun d'eux ne semblait fonctionner pour moi. Ma classe MyFirebaseMessagingService est:
package com.example.Android.aln4.Classes;
import Android.util.Log;
import com.google.firebase.messaging.FirebaseMessagingService;
public class MyFirebaseMessagingService extends FirebaseMessagingService {
private static final String TAG = "MyFirebaseMessaging";
@Override
public void onNewToken(String token) {
super.onNewToken(token);
Log.d(TAG,"Refreshed token: "+token);
}
}
et mon manifeste contient ce code suivant:
<service Android:name=".Classes.MyFirebaseMessagingService">
<intent-filter>
<action Android:name="com.google.firebase.MESSAGING_EVENT" />
</intent-filter>
</service>
De plus, toutes mes implémentations liées à Firebae sont à jour, comme suit:
//Firebase
implementation 'com.google.firebase:firebase-crash:16.2.1'
implementation 'com.firebase:firebase-client-Android:2.5.2'
implementation 'com.google.firebase:firebase-core:16.0.6'
implementation 'com.google.firebase:firebase-database:16.0.6'
implementation 'com.firebase:firebase-client-Android:2.5.2'
implementation 'com.firebaseui:firebase-ui-database:2.1.1'
implementation 'com.google.firebase:firebase-storage:16.0.5'
implementation 'com.google.firebase:firebase-firestore:18.0.0'
implementation 'com.google.firebase:firebase-messaging:17.3.4'
Mon problème en général est que chaque fois que j'exécute l'application, peu importe que ce soit après la désinstallation et l'installation ou lors d'une exécution régulière, la fonction onNewToken () n'est pas appelée, ou du moins je ne la vois pas dans le Logcat . Toute aide serait appréciée :)
Utilisez ceci :
FirebaseMessaging.getInstance().setAutoInitEnabled(true);
onNewToken () ne sera appelé que lorsqu'un nouveau jeton est généré ou que le jeton existant est mis à jour.
Vous pouvez ajouter le code suivant et appeler où vous le souhaitez dans l'application pour récupérer le jeton à tout moment.
FirebaseInstanceId.getInstance().getInstanceId()
.addOnCompleteListener(new OnCompleteListener<InstanceIdResult>() {
@Override
public void onComplete(@NonNull Task<InstanceIdResult> task) {
if (!task.isSuccessful()) {
Log.w(TAG, "getInstanceId failed", task.getException());
return;
}
// Get new Instance ID token
String token = task.getResult().getToken();
}
});