2017-03-17 85 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

你應該在你的初始Activity的'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

嗯聽起來像一個刷新令牌問題。 export =「false」應該不重要。 –

1

嘗試下面的代碼片段:

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

    if(null != refreshedToken) { 
    FirebaseMessaging.getInstance().subscribeToTopic("news"); 
    } 
}