2017-04-19 188 views
0

所以我讓我的應用程序運行並且通知在第一時間正常工作。但過了一段時間,它就停止了。Firebase成功,但沒有收到通知

我試過通過Firebase控制檯發送並返回成功,但應用程序未收到通知。該應用程序在後臺,它更早的工作,無論是在應用程序或服務器端的代碼沒有改變。

如果我重新安裝了應用程序(獲取新的令牌),通知將恢復正常(按預期工作),但如果令牌到期不應該Firebase控制檯返回錯誤(註冊令牌錯誤或其他)?

自從我使用該應用程序以來只有幾天,爲什麼令牌過期(文檔說令牌將在6個月內過期)? 而且我知道每次用戶運行我的應用程序時實際強制刷新令牌是一種糟糕的方法。

那麼我做錯了什麼?因爲如果我調試我的應用程序一切正常。得到了令牌,得到了通知。

是的,通過FCM控制檯和通過服務器發送通知產生相同的結果;成功,但沒有通知。

的onTokenRefresh代碼looklike這樣的:

namespace FCMClient 
{ 
    [Service] 
    [IntentFilter(new[] { "com.google.firebase.INSTANCE_ID_EVENT" })] 
    public class MyFirebaseIIDService : FirebaseInstanceIdService 
    { 
     const string TAG = "MyFirebaseIIDService"; 
     public override void OnTokenRefresh() 
     { 
      var refreshedToken = FirebaseInstanceId.Instance.Token; 
      Log.Debug(TAG, "Refreshed token: " + refreshedToken); 
      SendRegistrationToServer(refreshedToken); 
     } 
     void SendRegistrationToServer(string token) 
     { 
      //a post request to my server 

     } 
    } 
} 

感謝任何見解。

+0

嗨Sulaeman。如果沒有看到任何代碼片段(可能在'onTokenRefresh()'或至少是一個樣本有效載荷),很難查明任何東西。另外,您能否指出我在文檔中看到「*文檔表示令牌將在6個月*「? –

+0

my onTokenrefresh與此處的完全相同:https://developer.xamarin.com/guides/android/application_fundamentals/notifications/remote-notifications-with-fcm/#client_app 和我的文檔 –

+0

OnTokenRefresh很少被調用:它在以下情況下用於更新令牌: 當應用程序安裝或卸載時 當用戶刪除應用程序數據時。 當應用程序擦除實例ID時 當令牌的安全性受到影響時。 根據Google的Instance ID文檔,FCM實例ID服務會定期(通常每6個月)要求應用刷新其令牌。 這是根據:https://developer.xamarin.com/guides/android/application_fundamentals/notifications/remote-notifications-with-fcm/ –

回答

0

這總是發生在我身上,它是一種錯誤或者什麼,我必須每次都進行清理和重建,這不會在發佈時發生,您可以在每次運行應用程序的同時刪除Firebase實例並獲取新的令牌你正在調試。

,你可以這樣寫你的OnCreate

Task.Run(() => { 
var instanceid = FirebaseInstanceId.Instance; 
instanceid.DeleteInstanceId(); 
Log.Debug("TAG", "{0} {1}", instanceid.Token, instanceid.GetToken(this.GetString(Resource.String.gcm_defaultSenderId), Firebase.Messaging.FirebaseMessaging.InstanceIdScope)); }); 
相關問題