从firebase云消息传递获取所有订阅的主题

And*_*sen 33 android firebase-cloud-messaging

使用新的FirebaseMessaging,可以通过以下方式轻松取消/订阅主题:

FirebaseMessaging.getInstance().subscribeToTopic();
FirebaseMessaging.getInstance().unsubscribeFromTopic();
Run Code Online (Sandbox Code Playgroud)

但有没有办法获得当前安装所订阅的所有主题?

His*_*eer 71

我已经搜索了Android API,在SO上提出同样的问题但是没有找到任何东西.Android API中没有任何内容可以获取特定令牌的所有主题.

但是,您可以通过GET请求执行此操作

HTTP GET请求

https://iid.googleapis.com/iid/info/<TOKEN>?details=true
Content-Type:application/json
Authorization:key=AAA....i1nM:APA9.....81gTPXCE55....JLPEG0wZobG_ile8lI35JTzHYE5MC..BmDD_Cxj5OxB1Yh....Rs5lo3UwLNL9h-WcocGV....b5bYWNI55kzNsrHK-7GljUDtMn 
Run Code Online (Sandbox Code Playgroud)

在网址中取消:FirebaseInstanceId.getInstance().getToken();

key:可以在firebase控制台中找到:您的项目 - >设置 - >项目设置 - >云消息 - >服务器密钥

注意:找到密钥时要小心,不要使用不同的web api密钥.

  • 在应用程序中嵌入服务器密钥似乎不太安全.还有其他方法吗? (4认同)
  • 我和邮递员一起尝试过,但我没有与主题有关 (2认同)

Cas*_*rin 6

对于那些想用命令行 CURL 测试它的人,请遵循我使用的语法:

#curl --location --request GET 'https://iid.googleapis.com/iid/info/yourFCMDeviceToken?details=true' \
--header 'Authorization: Bearer YourProject_CloudMessaging_ServerKey'
Run Code Online (Sandbox Code Playgroud)

回复:

{
    applicationVersion: '4194309',
    application: 'com.domain.app',
    scope: '*',
    authorizedEntity: '913674269572',
    rel: { topics: { topicName: { addDate: '2020-08-19' } } },
    appSigner: 'ae7cbSomeHash23jsdfff34ac7ffd',
    platform: 'ANDROID'
} 
Run Code Online (Sandbox Code Playgroud)