Firebase 云消息传递 - 管理注册令牌

问题描述 投票:0回答:2

我正在考虑使用 Firebase 云消息传递在移动和浏览器应用程序之间实现消息传递,但我有几个问题,文档似乎没有回答。

为了能够接收消息,您需要注册令牌(RT)。 消息可以发送到 RT、主题或设备组

notification_key
。还可以使用 RT:

  • 直接
  • 订阅主题
  • 添加到设备组

RT 也可能过期/更改。

在我的应用程序中,我维护每个用户的 RT 列表。现在,当 RT 发生变化时:

  1. 我是否必须取消订阅旧令牌并订阅新令牌的主题?
  2. 我是否必须删除旧令牌并将新令牌添加到设备组?
  3. 是否可以获取有关令牌的设备组/主题的信息?
  4. 我可以多次向设备组添加令牌吗?
  5. 我可以多次订阅某个主题的代币吗?
  6. 同一 token 的多次订阅/添加是否会导致收到重复的消息

抱歉,问题很多,但我想,对于经历过这个的人来说,这应该是馅饼;)

firebase token registration firebase-cloud-messaging
2个回答
33
投票
  1. 我是否必须取消订阅旧代币并订阅新代币主题?

AFAIK,您不必取消订阅旧令牌,因为它会被 FCM 本身丢弃。对于新令牌,是的,您必须将其订阅到您需要的主题。通常的事情是通过在

subscribeToTopic()
中添加
onTokenRefreshed()
来完成(在 Android 中)。


  1. 我是否必须删除旧令牌并将新令牌添加到设备组?

是的。您必须处理设备组消息传递的映射/关系。请参阅我的回答这里。这与主题不同。该令牌将失效,但将作为相应注册密钥的注册令牌列表的一部分保留。

这就是为什么如果您发送到设备组,其中一个令牌可能会收到

NotRegistred
错误的原因。 :)


  1. 是否可以获取有关令牌的设备组/主题的信息?

对于设备组消息传递(与#2 相同),开发人员(您)必须自己管理这些详细信息。对于主题,您可以使用 InstanceID API。具体来说,将

details
参数设置为
true
:

[可选] boolean

details
:将此查询参数设置为
true
以获取可用的 IID 令牌详细信息,包括与此令牌关联的设备的连接信息和 FCM 或 GCM 主题订阅信息(如果有)。未指定时,默认为
false


  1. 我可以多次向设备组添加令牌吗?

嗯。是的。您的意思是 same 标记吗?如果是这样,我还没有尝试过。添加之前不妨在客户端进行一些检查。


  1. 我可以多次订阅一个主题的代币吗?

如果您的意思是重新订阅,那么是的。如果你的意思是重复请求订阅,我认为结果仍然会成功。但行为没有改变。


  1. 同一个token的多次订阅/添加会导致收到重复的消息吗?

测试了一下。对于重复的主题订阅和将相同的令牌添加到设备组,您不会收到重复的消息。如果 FCM 已订阅/添加到设备组,则 FCM 似乎会忽略订阅/添加注册令牌的请求。


0
投票

想听听人们对上面@Ced 提出的问题的想法

© www.soinside.com 2019 - 2024. All rights reserved.