2017-03-17 86 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"); 
    } 
}