Android / Firebase-检查是否已订阅主题


问题内容

我想知道是否有一种方法可以测试您是否已订阅Android方面的主题。

基本上,我 希望
所有的设备将其安装在订阅一个主题,当第一次由设备获取的令牌。但是,设备总是有可能无法订阅。FCM注册令牌应该在设备上安装很长时间,因此,在不清除数据,卸载/重新安装等情况下,不应再次调用onTokenRefresh()方法。

我的想法是测试以查看设备是否已订阅MainActivity中的主题,如果没有,则尝试再次订阅。如果订阅失败,则获取新令牌并重试,依此类推。

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

    // Subscribe to a topic
    Log.e(TAG, "Subscribing to topic");
    FirebaseMessaging.getInstance().subscribeToTopic("test");

因此,我可以订阅和取消订阅,但是如何检查设备是否订阅了主题?不幸的是,我做了很多的谷歌搜索,却找不到任何东西。

我将不胜感激任何/所有帮助。谢谢!


问题答案:

当前无法在客户端检查他们是否已订阅主题。

其行为subscribeToTopic是它将立即订阅指定的主题,如果失败,它将自行重试(除非您的应用被杀死)。在这里查看我的答案。

我认为强制onTokenRefresh调用只是为了确保subscribeToTopic太多。如果需要,您可以在初始活动中简单地调用它,那样,每次应用启动时,它都会发送订阅请求。