Android/Firebase - 检查您是不是订阅了主题

Posted

技术标签:

【中文标题】Android/Firebase - 检查您是不是订阅了主题【英文标题】:Android/Firebase - Check to see if you are subscribed to topicAndroid/Firebase - 检查您是否订阅了主题 【发布时间】:2018-02-18 12:12:38 【问题描述】:

我想知道是否有一种方法可以测试您是否订阅了 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");

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

非常感谢任何/所有帮助。谢谢!

【问题讨论】:

【参考方案1】:

目前无法在客户端检查他们是否订阅了某个主题。

subscribeToTopic 的行为是它会立即订阅指定的主题,如果失败,它会自行重试(除非你的应用程序被杀死)。看我的回答here。

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

【讨论】:

以上是关于Android/Firebase - 检查您是不是订阅了主题的主要内容,如果未能解决你的问题,请参考以下文章

Android FireBase - 连接到游戏服务排行榜

Android - Firestore/Firebase 实时数据库“.info/connected”返回错误的连接状态

从多个孩子 Android Firebase 中检索同一个孩子

Android Firebase 通知提供默认图标

Android - Firebase - 将用户发送到聊天室

android Firebase 云消息通知图标