当前位置: 首页 > 知识库问答 >
问题:

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

殷永嘉
2023-03-14

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

基本上,我希望所有设备在安装期间,当设备首次获得令牌时,都会订阅一个主题。然而,设备总是有可能无法订阅。FCM注册令牌应该长时间安装在设备上,因此,如果不清除数据、卸载/重新安装等,就不应该再次调用onTokenRefresh()方法。

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

    @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");

因此,我可以订阅和取消订阅,但如何检查设备是否订阅了某个主题?很不幸,我在谷歌上搜索了不少,但什么也没找到。

我将非常感谢任何/一切帮助。谢谢

共有2个答案

祁远
2023-03-14

实际上,这可以通过使用此api来实现:https://developers.google.com/instance-id/reference/server#get_information_about_app_instances

作为IID\U令牌,您需要FCM令牌,并且在标头中,您必须通过身份验证:key=YOUR\u SERVER\u key。您可以找到如下所述的服务器密钥:Firebase messaging,从哪里获取服务器密钥?。

不要忘了在url中包含查询参数,否则主题将不会包含在响应中。

我建议编写一个Cloud Function来封装它,这样您就不会将服务器密钥部署到客户端。

符国安
2023-03-14

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

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

我认为强制调用onTokenRefresh来确保subscribeToTopic太多了。如果你愿意的话,你只需在初始活动中调用它,这样,每次应用启动时,它都会发送订阅请求。

 类似资料:
  • 问题内容: 我想知道是否有一种方法可以测试您是否已订阅Android方面的主题。 基本上,我 希望 所有的设备将其安装在订阅一个主题,当第一次由设备获取的令牌。但是,设备总是有可能无法订阅。FCM注册令牌应该在设备上安装很长时间,因此,在不清除数据,卸载/重新安装等情况下,不应再次调用onTokenRefresh()方法。 我的想法是测试以查看设备是否已订阅MainActivity中的主题,如果没

  • 我目前正在尝试将我的应用程序迁移到firebase,我正在寻找firebase的解析安装和通道。 我发现我们应该使用主题,但在我的应用程序中,“订阅”和“取消订阅”主题很常见,但没有办法(我发现)看到用户订阅了哪些主题。有什么想法吗? 我已经阅读了Firebase文档,但我是Firebase新手,因此可能有更多经验的人会知道:https://firebase.google.com/docs/clo

  • 1.手机版 操作方法:订阅号右上角详情按钮   2.电脑版 操作方法:订阅号右上角详情按钮

  • 问题内容: 每当我打开应用程序时,我都想检查自动续订订阅状态。 这是为了确保用户仍订阅了该服务。我该如何实现? 有什么想法吗?谢谢 PS:我正在使用 问题答案: 这是几种进行收据验证的方法,以检查是否已将用户授予订阅。这是正确执行此操作的两种方法: 如此处所写,在本地进行收据验证。 远程执行收货验证,因为它是写在这里。提到不应将收据发送到应用程序内的App Store。简短的摘要: 您的应用会将收

  • STOMP规范规定订阅必须有id头。 https://stomp.github.io/stomp-specification-1.2.html#SUBSCRIBE_id_Header 订阅id标头 由于单个连接可以与服务器有多个打开的订阅,因此必须在框架中包含id标头以唯一标识订阅。id标头允许客户端和服务器将后续消息或取消订阅帧与原始订阅关联。在同一连接中,不同的订阅必须使用不同的订阅标识符。

  • https://github.com/azure/azure-service-bus/tree/master/samples/dotnet/gettingstart/microsoft.azure.servicebus/topicsubscriptionwithruleoperationssample 现在我想添加一个筛选器/规则,这样只有通过筛选器中定义的特定条件的消息才应该给订阅。 例如,下面