0

我正在使用Firebase通知的項目正在使用。我面臨的一個問題是在安裝應用程序幾個小時後沒有收到通知。最初按預期收到通知,但後來無法按預期工作。Android Firebase通知「OnTokenRefresh」沒有被調用

我無法確定此問題的原因。

@Override public void onTokenRefresh() 

上述方法用於火力的憑證更新和使用的通知將來使用最新的令牌的服務類(FCMIDService)的內部。

<service android:name=".services.fcm.FCMIDService"><intent-filter> <action android:name="com.google.firebase.INSTANCE_ID_EVENT"/></intent-filter> </service>

任何幫助應該greately讚賞。

+0

這個包名是否正確「.services.fcm.FCMIDService」? –

+1

您的問題標題與您的問題詳細信息不符。在標題中,你說「OnTokenRefresh」沒有被調用,並且有問題 - 你沒有收到通知。 –

+0

@ Vlad Matvienko「OnTokenRefresh」與通知相關。問題標題必須簡短而精確。如果你發現它們之間沒有關係,你可以更詳細地定義它。 –

回答

2

onTokenRefresh FirebaseInstanceIdService僅在生成新標記時調用。如果您的應用程序先前已安裝並生成了令牌,則onTokenRefresh將不會被調用。嘗試卸載並重新安裝應用程序以強制生成新的令牌,這會導致onTokenRefresh被調用。

確保牛逼你FirebaseInstanceIdService在AndroidManifest.xml中正確定義這樣

<service 
    android:name="com.bnt.etailers.fcm.MyFireBaseInstanceIDService" 
    android:exported="false"> 
    <intent-filter> 
     <action android:name="com.google.firebase.INSTANCE_ID_EVENT" /> 
    </intent-filter> 
</service> 

<service 
    android:name="com.bnt.etailers.fcm.GCMNotificationIntentService" 
    android:exported="false"> 
    <intent-filter> 
     <action android:name="com.google.firebase.MESSAGING_EVENT" /> 
    </intent-filter> 
</service> 
+0

Hi @ Nilesh Rathod我如上使用。如果不卸載應用程序,我如何重現onTokenRefresh或者是否存在調用此方法的任何方案。 –

+1

@RaghulSugathan通過InstanceID.getInstance(this).deleteInstanceID()調用playservice的InstanceID並在後臺線程中調用它,當你成功刪除它之後,調用InstanceID.getInstance(this).getID()來生成新的令牌 –

+1

@RaghulSugathan如果您想手動強制執行onTokenRefresh(),則可以創建一個IntentService並刪除該令牌實例。然後,當你調用getToken時,onTokenRefresh()方法會再次被調用 –

0

加入這一行你的主頁活動的最新令牌每一次獲得的應用程序重新啓動時。

String token = FirebaseInstanceId.getInstance().getToken(); 
相關問題