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

标签 java android firebase firebase-authentication firebase-cloud-messaging

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

基本上,我希望所有设备都会在安装过程中(当设备首次获取 token 时)订阅一个主题。然而,设备总是有可能订阅失败。 FCM注册 token 应该长期安装在设备上,因此,在没有清除数据、卸载/重新安装等操作的情况下,不应再次调用onTokenRefresh()方法。

我的想法是测试设备是否订阅了我的 MainActivity 中的主题,如果没有,则尝试再次订阅。如果订阅失败,则获取新的token并重试,等等

    @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 的行为是它会立即订阅指定的主题,如果失败,它会自行重试(除非您的应用程序被终止)。看我的回答here .

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

关于java - Android/Firebase - 检查您是否订阅了主题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59418519/

相关文章:

android - 每日闹钟问题,Calendar.DATE和Calendar.DAYS_OF_MONTH的区别

android - FIrebase 归因中的 (not-set) 是什么意思?

android - 如何解决flutter中 'Object of type XXXXX is not registered inside GetIt'的问题?

android - 从内部存储发送带有附件的电子邮件

android - 任何包装 View 组?

android - 链接 Firebase C++(分析)库时出错

java - 无法在 Eclipse Oxygen 中将动态 Web 项目版本设置为 4.0

javac.exe 无法识别

java - 通过 Akka 在 Java 应用程序和 Scala 应用程序之间传输对象消息

java - 用于在模式之后提取值的正则表达式