suppose que j'ai un merci p> loginactivité code> où l'utilisateur peut vous enregistrer ou se connecter avec les informations d'identification existantes. Je ne veux pas
FirebaseInstanceIdService Code> Pour générer un jeton, à moins que l'utilisateur ne soit connecté et
MainAlyCity code> de l'application est lancé. p>
3 Réponses :
Vous ne pouvez pas bloquer Ce que vous pourriez faire dans votre cas d'utilisation est le suivant: p>
De cette façon, vous pouvez traiter le jeton lorsque l'utilisateur est connecté et si le jeton n'est pas disponible (ou est pivoté), vous recevrez l'événement Mise à jour (3 juillet 2017) STRUT>: Dans les commentaires, un lecteur a rappelé que C'est vrai. Lorsque l'utilisateur se connecte, Vous devez harceler ce cas dans votre application. Très probablement, l'utilisateur peut utiliser l'application quand même, mais vous ne pouvez pas envoyer de notification push avant de recevoir le jeton. P>
Lorsque firebaseinstanceidService.onkenKeRefresh () code> d'être appelé jusqu'à ce que l'utilisateur soit connecté. P>
firebaseinstanceIdService.onkenKeRefresh () code> Ignore l'événement si l'utilisateur n'est pas connecté à li>
FirebaseInstantanceID.getToken () code> et si
! = NULL code> appel
Onkyrefresh () code> (ou directement votre logique> (ou directement votre logique ) manuellement. li>
ul>
Onkenrefresh () Code> ultérieurement. p>
FirebaseIntantanceidService.onokentrefresh () code> pourrait être appelé après la connexion de l'utilisateur. P>
getToken () code> pourrait toujours retourner
null code> si
Onkyrefresh () code> n'a pas été appelé plus tôt. P>
Onkentrefresh () code> est enfin appelé, si l'utilisateur se connecte avant, que vous pouvez associer le jeton à l'utilisateur. P>
Que se passe-t-il si FirebaseInstantanceIDService.onkengefresh () est appelé après que l'utilisateur se connecte est un appel ASYNC?
Cela peut arriver et vous devez gérer l'affaire dans votre application. Très probablement, l'utilisateur peut utiliser l'application quand même, mais vous ne pouvez pas envoyer de notification push avant de recevoir le jeton. Ensuite, lorsque vous recevez le jeton, vous pouvez l'associer à l'utilisateur qui vous connecte. (J'ai aussi mis à jour la réponse)
C'est agréable mais je pense que nous devons supprimer l'instance et rappeler la méthode getinstance () code> après la connexion au cas où il est appelé avant de faire une nouvelle jeton à partir de l'instance nouvellement générée.
Ça ne devrait pas être nécessaire
Désolé mais ce n'est pas possible. FireBaseInstantanceIDService Code> Appelez automatiquement sur le démarrage de l'application et générez un jeton
code>. N'oubliez pas que sa relation avec application
instance code>. Pas avec l'un utilisateur particulier. Si vous essayez d'enregistrer
jeton code> avec un utilisateur particulier (c'est-à-dire lorsque l'utilisateur est connecté, vous enregistrerez ce
jeton code> dans le serveur DB pour la notification push de cet utilisateur) .Si vous Est-ce que cela fait un bug que vous aurez confronté à l'avenir est que si deux em> partageez une application
instance code> puis appuyez sur la notification Push pour le mauvais utilisateur ..
J'espère que vous avez mon point. p>
Salut USMAL. Comment résoudre ce problème? Peut-être supprimer une association de jetons de l'utilisateur déconnecté sur mon serveur et l'ajouter à l'utilisateur nouvellement connecté ... que pensez-vous?
@Alessandro oui j'ai eu un problème ..J'ai fait ce que tu mentionnes
Merci, je fais la même chose! :)
@usmanlqbal j'ai un problème..je veux obtenir une pièce d'identité FCM à l'écran de Splash..mais le problème est que mon autre appel d'API d'abord, puis je reçois la FCM ID..Qu'est-ce que c'est le problème
@ ADITYAVYAS-LAKHAN Vous devez faire votre appels d'API dans la méthode FCMService OnkyRefresh () Code>
Je maintient un drapeau dans Pref partagé qui indique si le jeton GCM est envoyé au serveur ou non. Dans l'écran de Splash à chaque fois que j'appelle une méthode SendDeviceTokentoserver. Cette méthode vérifie si l'identifiant de l'utilisateur n'est pas vide et l'état de l'envoi de GCM puis envoyez le jeton au serveur. dans la classe MyFireBaseInstanceDService p> @Override
public void onTokenRefresh() {
// Get updated InstanceID token.
String refreshedToken = FirebaseInstanceId.getInstance().getToken();
Log.d(TAG, "Refreshed token: " + refreshedToken);
// If you want to send messages to this application instance or
// manage this apps subscriptions on the server side, send the
// Instance ID token to your app server.
Common.saveBooleanPref(this,Constants.isTokenSentToServer,false);
Common.sendRegistrationToServer(this);
}
Appelez simplement le
FirebaseInstuced.getinstance (). GetToken () Code> Dans votre
MainActivity code> 'S
Oncreate () Code>. Ou partout où dans l'activité, vous pensez que vous en aurez besoin.
Selon les journaux, mon
FirebaseInstantanceIDService code> génère un jeton sur le démarrage de l'application. Y a-t-il quelque chose que je peux empêcher cela?
Désolé. Je suis un peu confus. Faites-vous référence à
FirebaseInstantanceIDService.onkenSrefresh () code>?
Ouais, excuses pour ne pas pointer cela
Hmm.
OnkyreFresh () Code> TOUJOURS TOUJOURS TOUJOURS LE TRAVAILLEMENT À UN NOUVELLE INSTALLATION (Le jeton précédent est invalidé). Découvrez le DOC pour ce qui déclenche cette .
Merci, mcawesomville.