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