2017-03-17 5 views
0

Firebaseを使用して、自分のアプリをインストールしたユーザーに通知します。 しばらくして(一部ではない)一部の(多くではありません)通知の受信が停止されましたが、通知の受信を停止します。Firebase(FCM) - 購読しているトピックの通知の受信を停止します。

私はトークンをリフレッシュすると考えられるクラスを持っているので、何が原因か分かりません。

public class MyFirebaseInstanceIDService extends FirebaseInstanceIdService { 

    private static final String TAG = "MyFirebaseIIDService"; 

    @Override 
    public void onTokenRefresh() { 
     String refreshedToken = FirebaseInstanceId.getInstance().getToken(); 
     Log.d(TAG, "Refreshed token: " + refreshedToken); 

    } 

} 

ありがとう

+0

は自動的に加入し、リフレッシュトークンはありますか?あなたが持っているコードスニペットに基づいています。 –

+0

ああ...あなたが正しいと思います。それを行う正しい場所はどこにあると思いますか?新しいトークンを取得した直後ですか? – Rani

+0

初期アクティビティの 'onCreate()'と 'onTokenRefresh()'の両方の中で実行する必要があります。 :) –

答えて

0

マニフェストでサービスを宣言しましたか?

<service android:name="MyFirebaseInstanceIDService" android:exported="false"> 
    <intent-filter> 
     <action android:name="com.google.firebase.INSTANCE_ID_EVENT"/> 
    </intent-filter> 
</service> 
+0

はい、ただし、属性android:exported = "false"が欠けています。それは問題ですか?ユーザーはメッセージを受け取るだけですが、しばらくしてからメッセージを受け取ることはありません(再インストールすると問題が解決されます)。ありがとうございます – Rani

+1

うーん、リフレッシュトークンの問題のように聞こえます。 exported = "false"は問題ではありません。 –

1

以下のコードを試してみてください。

@Override 
public void onTokenRefresh() { 
    String refreshedToken = FirebaseInstanceId.getInstance().getToken(); 
    Log.d(TAG, "Refreshed token: " + refreshedToken); 

    if(null != refreshedToken) { 
    FirebaseMessaging.getInstance().subscribeToTopic("news"); 
    } 
} 
関連する問題