作者:向陽阿莫_545 | 来源:互联网 | 2023-02-10 12:49
我得到了未注册的注册令牌,即使我确定我的令牌是正确的,我在我的日志中检查它我正在使用主令牌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/中尝试使用相同的令牌时,我没有收到NotRegistered消息
请注意,当我卸载应用程序并再次安装令牌工作时,但在我收到此错误消息后.
1> Mina Fawzy..:
此问题触发的原因是该令牌未注册
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
}
希望这有助于任何人面对同样的问题