J'ai reçu un jeton d'enregistrement non enregistré même si je suis sûr que mon jeton est correct et que je le vérifie dans mon journal, j'utilise le jeton principal FirebaseInstanceId.Instance.Token
.
Voici ma méthode:
private void ConfigureFireBase()
{
Task.Run(() => {
var instanceId = FirebaseInstanceId.Instance;
Android.Util.Log.Debug("TAG", "{0} {1}", instanceId?.Token?.ToString(), instanceId.GetToken(GetString(Resource.String.gcm_defaultSenderId), Firebase.Messaging.FirebaseMessaging.InstanceIdScope));
});
}
Je vérifie aussi la méthode OnTokenRefresh
le même jeton
public override void OnTokenRefresh()
{
var refreshedToken = FirebaseInstanceId.Instance.Token;
Log.Debug(TAG, "Refreshed token: " + refreshedToken);
SendRegistrationToServer(refreshedToken);
}
mais quand j'ai essayé dans la console Firebase, il m'a donné ce message d'erreur, quand j'ai essayé dans http://pushtry.com/ avec le même signe que je n'ai pas NotRegistered message
Note lorsque je désinstalle l'application et que je réinstalle le jeton, mais après avoir reçu ce message d'erreur.
La raison pour laquelle ce problème a été déclenché parce que le jeton n'est pas enregistré
The registration token may change when: The app deletes Instance ID The app is restored on a new device The user uninstalls/reinstall the app The user clears app data.
et cela se produit uniquement en mode débogage, alors ne vous inquiétez pas en mode publication, tout ira bien.
Comment résoudre le problème?
il est facile de forcer l'actualisation de l'appel de cette méthode dans votre activité d'atterrissage (MainActivity, Login), cette méthode force Firebase à appeler OnTokenRefresh()
private void ConfigureFireBase()
{
#if DEBUG
Task.Run(() =>
{
var instanceId = FirebaseInstanceId.Instance;
instanceId.DeleteInstanceId();
Android.Util.Log.Debug("TAG", "{0} {1}", instanceId?.Token?.ToString(), instanceId.GetToken(GetString(Resource.String.gcm_defaultSenderId), Firebase.Messaging.FirebaseMessaging.InstanceIdScope));
});
// For debug mode only - will accept the HTTPS certificate of Test/Dev server, as the HTTPS certificate is invalid /not trusted
ServicePointManager.ServerCertificateValidationCallback += (o, certificate, chain, errors) => true;
#endif
}
J'espère que cela aidera quelqu'un à faire face au même problème
Dans mon cas, j'avais utilisé Emulator et le pare-feu le bloquait. J'ai utilisé mon mobile, activé les options de développement et cela a fonctionné.
J'espère que cela t'aides.