2017-03-01 174 views
11

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

这里是我的方法:

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

,但是当我在火力地堡控制台尝试它给了我此错误消息,当我试着http://pushtry.com/同一标记我没有未注册消息

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

+0

嗨。对不起,但是你可以解释这部分“*但是当我在Firebase控制台中尝试时,它给了我这个错误消息,当我在http://pushtry.com/以相同的令牌获得Not NotRegistered消息*时尝试。这有点令人困惑。您的意思是它可以在Firebase控制台上使用,但是在使用pushtry.com时不能使用,反之亦然? –

+1

没有它dosnt在两个工作,但我显示消息在双方,在Firebase控制台它说,未注册的注册令牌,即使这个令牌我从OnTokenRefresh方法得到,所以它应该刷新一个 –

+0

同样是与我同在。我也使用Xamarin。你有没有设法解决这个问题? –

回答

6

之所以出现这种问题,解雇的原因是令牌是未注册

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,登录),此方法部队火力调用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 
     } 

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

+0

看起来对'DeleteInstanceId()'的调用会导致'FirebaseInstanceId.Instance.Token'在短时间内返回'null',但它会也会为'FirebaseInstanceIdService'触发'OnTokenRefresh()',然后用新的注册令牌填充'FirebaseInstanceId.Instance.Token'。对于我来说,对FirebaseInstanceId.Instance.GetToken(...)的调用是不相关的,只会返回一个与FirebaseInstanceId.Instance.Token不同的未注册标记(使用Firebase v42.1021.1)。 – tie

0

在我的情况下,我使用了仿真器,防火墙阻止了它。我使用了我的手机,启用了开发人员选项,并开始工作。

希望这会有所帮助。