0

Firebase通知が使用されているプロジェクトで作業しています。私はアプリケーションインストールの数時間後に通知を受け取らないという問題に直面しています。最初は通知は期待通りに受信されますが、後で意図したとおりに動作しません。AndroidのFirebase通知「OnTokenRefresh」が呼び出されない

この問題の原因を特定できません。方法上記

@Override public void onTokenRefresh() 

トークンfirebaseのリフレッシュ及び通知の将来の使用のための最新のトークンを使用するためのサービスクラス(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

firebaseInstanceIdServiceのonTokenRefreshは、新しいトークンが生成されたときにのみ呼び出されます。あなたのアプリが以前にインストールされ、トークンが生成されていれば、onTokenRefreshは呼び出されません。新しいトークンの生成を強制するためにアプリケーションをアンインストールして再インストールすると、onTokenRefreshが呼び出されます。

は、TあなたのFirebaseInstanceIdServiceが正しくとき、アプリを再起動し、最新のトークンたびに得るためにあなたの家の活動では、この行を追加します。この

<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

こんにちは@ Nilesh Rathod私は上記のように使用しています。アプリケーションをアンインストールせずに、どのようにしてonTokenRefreshを再現することができますか、このメソッドが呼び出されるシナリオがあります。 –

+1

@RaghulSugathanは、InstanceID.getInstance(this).deleteInstanceID()によって再生サービスのInstanceIDを呼び出し、バックグラウンドスレッドから呼び出すと、正常に削除した後、InstanceID.getInstance(this).getID()を呼び出して新しいトークンを生成します。 –

+1

@RaghulSugathan onTokenRefresh()を手動で強制したい場合は、IntentServiceを作成してトークンインスタンスを削除することができます。次に、getTokenを呼び出すと、onTokenRefresh()メソッドが再度呼び出されます –

0

ようなあなたのAndroidManifest.xmlで定義されていることを確認します。

String token = FirebaseInstanceId.getInstance().getToken(); 
関連する問題