我有未注册的注册令牌,即使我确定我的令牌是正确的,我在我的日志中检查它我正在使用主令牌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/中尝试使用相同的令牌时,我没有未注册消息
注意 当我卸载应用程序并再次安装令牌时,但是在我收到此错误消息之后。
答案 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.
这只发生在调试模式下,所以不要担心在发布模式下,每件事情都会没问题。
如何解决问题?
在登陆活动(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)
在我的情况下,我使用过模拟器,而防火墙阻止了它。我使用了我的手机,启用了开发人员选项并且它已经运行了。
希望这有帮助。