0

J'utilise le FCM pour obtenir le jeton d'utilisateur. J'ai réussi à enregistrer le jeton utilisateur dans la base de données Firebase lors de sa première connexion à l'application. Je me demande juste quoi faire quand le jeton est rafraîchi. J'ai essayé quelque chose, mais je ne suis pas sûr que ce soit la bonne façon de le faire.FCM - jeton de mise à jour

public class MyFirebaseInstanceIDService extends FirebaseInstanceIdService { 

@Override 
public void onTokenRefresh() { 
    super.onTokenRefresh(); 

    String token = FirebaseInstanceId.getInstance().getToken(); 
    SharedPreferences prefsToken = getSharedPreferences(Params.IDToken, MODE_PRIVATE); 
    SharedPreferences.Editor edit = prefsToken.edit(); 
    edit.putString("token",token); 
    edit.commit(); 

    sendRegistrationToServer(token); 
} 

private void sendRegistrationToServer(String token) { 
    FirebaseUser user = FirebaseAuth.getInstance().getCurrentUser(); 

    DatabaseReference ref = FirebaseDatabase.getInstance().getReference(Params.USERS).child(user.getUid()).child("token") 
      .setValue(token); 
    } 
    } 

Dans le sharedPreferencess je passe le jeton à l'activité de connexion et l'enregistrer sur le databse firebase. Mais alors j'ai peur qu'il déclenche la méthode "sendReistrationToServer", car il va planter parce que l'utilisateur doit encore s'inscrire. Je ne suis pas sûr que ce soit la bonne façon de le faire. Je pensais peut-être passer le jeton avec localBroadCast ou Intent. ou peut-être il existe un meilleur moyen d'enregistrer le jeton lorsqu'il est actualisé.

Répondre

1

vous pouvez l'enregistrer dans les préférences partagées et sur la connexion, vous pouvez save a boolean as logedIn in the preferences aussi bien, et dans le sendRegistrationToServer vous pouvez vérifier que booléen, si elle est true alors vous pouvez save it in database.

Vous aimez cette

private void sendRegistrationToServer(String token) { 
if(getSharedPreferences(Params.IDToken, MODE_PRIVATE).get("logedIn",false)){ 
FirebaseUser user = FirebaseAuth.getInstance().getCurrentUser(); 

DatabaseReference ref = FirebaseDatabase.getInstance().getReference(Params.USERS).child(user.getUid()).child("token") 
     .setValue(token); 
    } 
    } 
+0

Oui Il suffit d'enregistrer un jeton pour tout utilisateur connecté in- il est une adresse à une application-installer sur un appareil, pas le profil d'un utilisateur sur une application sur un appareil, vous pouvez l'utiliser pour plusieurs utilisateurs sur la même application (pas que les gens le fassent) –

+0

Faites ceci à la première fois, c'est-à-dire si votre valeur pour le jeton dans SharedPrefs n'est pas nulle, alors ce n'est pas la première fois (mais regardez vous ne pas effacer accidentellement ce préf) –