Firebase动态订阅主题

时间:2020-04-14 11:44:14

标签: android firebase google-cloud-functions firebase-cloud-messaging

我的应用中有一个场景,发生某个事件,并且我有一个用户ID /令牌列表,我需要将通知发送给所有这n个设备。 要使用n个令牌触发fcm,n时间将不可行 所以我应该动态创建一个主题,并将这n个用户的设备ID /令牌订阅给该主题。

我知道我可以从客户端应用程序执行此操作,但是可以从后端执行此操作。 我正在使用Phoenix作为后端。

2 个答案:

答案 0 :(得分:1)

我找到了方法,写出此答案,以防将来对其他人有帮助

是的,如果我们具有以下内容的列表,则可以动态创建主题 valid registration token

如果您要生成主题,则这是端点URL,因为您具有用户列表-

https://iid.googleapis.com/iid/v1:batchAdd

授权标头包含-

Content-Type- application/json
Authorization- key=<your-server-key>

主体参数看起来像-

{
"to": "/topics/<topic name>",
    "registration_tokens": [
        "token1",
        "token2"
    ]
}

现在创建了主题,

您可以使用- https://fcm.googleapis.com/fcm/send

轻松地向该主题发送消息

授权令牌与上一个令牌相同

身体为

{
"priority": "HIGH",
    "notification": {
        "title": "New Text Message",
        "image": "https://firebase.google.com/images/social.png",
        "body": "Hello how are you?"
    },
    "to": "/topics/<topic name>"
}

答案 1 :(得分:0)

要使用n个令牌触发fcm,n时间将不可行

使用主题并不会固有地改变FCM消息传递的工作方式。使用主题时,Google服务器会保留该主题到已订阅令牌的映射。因此,当您调用API将消息发送给某个主题时,Google服务器会将该主题散布到令牌中,然后以与您自己调用令牌时使用API​​相同的基础结构传递消息。

由于您已经拥有令牌,因此直接发送给令牌而不是创建一次性主题可能会更简单。