Firebase中未注册的注册令牌

时间:2017-03-01 16:32:25

标签: android xamarin.android firebase-cloud-messaging

我有未注册的注册令牌,即使我确定我的令牌是正确的,我在我的日志中检查它我正在使用主令牌FirebaseInstanceId.Instance.Token

这是我的方法:

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

            });

        }

我同样检查OnTokenRefresh方法

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

但是当我在Firebase控制台中尝试时,它给了我这个错误消息,当我在http://pushtry.com/中尝试使用相同的令牌时,我没有未注册消息

注意 当我卸载应用程序并再次安装令牌时,但是在我收到此错误消息之后。

2 个答案:

答案 0 :(得分:15)

此问题触发的原因导致该令牌未注册

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.

Reference

这只发生在调试模式下,所以不要担心在发布模式下,每件事情都会没问题。

如何解决问题?

在登陆活动(MainActivity,Login)中轻松强制刷新令牌调用此方法,此方法强制firebase调用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
        }

希望这有助于任何人面对同样的问题

答案 1 :(得分:0)

在我的情况下,我使用过模拟器,而防火墙阻止了它。我使用了我的手机,启用了开发人员选项并且它已经运行了。

希望这有帮助。