web-dev-qa-db-de.com

Nicht registriertes Registrierungs-Token in Firebase

Ich habe ein nicht registriertes Registrierungs-Token erhalten, obwohl ich sicher bin, dass mein Token korrekt ist. Ich überprüfe es in meinem Protokoll. Ich verwende das Master-Token FirebaseInstanceId.Instance.Token.

Hier ist meine Methode:

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));

            });

        }

Ich überprüfe auch OnTokenRefresh Methode das gleiche Token

public override void OnTokenRefresh()
        {
            var refreshedToken = FirebaseInstanceId.Instance.Token;
            Log.Debug(TAG, "Refreshed token: " + refreshedToken);
            SendRegistrationToServer(refreshedToken);
        }

wenn ich es in der Firebase-Konsole ausprobiert habe, wird mir diese Fehlermeldung angezeigt, als ich es mit http://pushtry.com/ mit dem gleichen Token versuchte, erhielt ich keine NotRegistered -Meldung 

Hinweis, wenn ich die App deinstalliere und das Token erneut installiere, aber nach und nach diese Fehlermeldung angezeigt wurde.

16
Mina Fawzy

Der Grund, warum dieses Problem ausgelöst wurde, weil das Token nicht registriert wurde 

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.

Referenz

und dies geschieht nur im Debug-Modus, so dass Sie sich im Release-Modus keine Sorgen machen müssen.

Wie können Sie das Problem beheben? 

es ist einfach, das Token zu aktualisieren, indem Sie diese Methode in Ihrer Landeaktivität (MainActivity, Login) aufrufen. Diese Methode zwingt die Firebase zum Aufruf von 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
        }

Hoffen Sie, dass diese Hilfe jemandem das gleiche Problem gegenüberstellt 

15
Mina Fawzy

In meinem Fall hatte ich den Emulator verwendet und die Firewall blockierte ihn. Ich habe mein Handy benutzt, die Entwickleroptionen aktiviert und es wurde gearbeitet.

Hoffe das hilft.

0
Ruby