2017-03-01 178 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

在我的情況下,我使用了仿真器,防火牆阻止了它。我使用了我的手機,啓用了開發人員選項,並開始工作。

希望這會有所幫助。