web-dev-qa-db-fra.com

Jeton d'enregistrement non enregistré dans Firebase

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.

16
Mina Fawzy

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.

Référence

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 

15
Mina Fawzy

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.

0
Ruby