Get all subscribed topics from firebase cloud messaging

Using the new FirebaseMessaging it's easy to un/subscribe to topics via:

FirebaseMessaging.getInstance().subscribeToTopic();
FirebaseMessaging.getInstance().unsubscribeFromTopic();

But is there any way to get all topics the current installation is subscribed to ?


Solution 1:

I have searched Android API, asked questions for the same on SO but din't find anything. There is nothing in Android API to get all topics of a specific token.

However, you can do it through a GET request

HTTP GET Request

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 

TOKEN in url : FirebaseInstanceId.getInstance().getToken(senderId, scope);

key : can be found in firebase console: Your project -> settings -> Project settings -> Cloud messaging -> Server Key

Note: Be careful when finding key, dont use web api key its different.

senderId can be found in Settings -> Cloud Messaging -> Sender ID

scope is usually "FCM"

Solution 2:

For those that would like to test it with command line CURL follow bellow the syntax that I have used:

#curl --location --request GET 'https://iid.googleapis.com/iid/info/yourFCMDeviceToken?details=true' \
--header 'Authorization: Bearer YourProject_CloudMessaging_ServerKey'

Response:

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

Solution 3:

Never tried programmatically.

But you can do it by goto firebase console->your project->cloud messaging->new notification->target-> click on topic tab next to user segment just click on Message topic text box you will get list of subscribed topics

enter image description here