我正在考虑使用 Firebase 云消息传递在移动和浏览器应用程序之间实现消息传递,但我有几个问题,文档似乎没有回答。
为了能够接收消息,您需要注册令牌(RT)。 消息可以发送到 RT、主题或设备组
notification_key
。还可以使用 RT:
RT 也可能过期/更改。
在我的应用程序中,我维护每个用户的 RT 列表。现在,当 RT 发生变化时:
抱歉,问题很多,但我想,对于经历过这个的人来说,这应该是馅饼;)
- 我是否必须取消订阅旧代币并订阅新代币主题?
AFAIK,您不必取消订阅旧令牌,因为它会被 FCM 本身丢弃。对于新令牌,是的,您必须将其订阅到您需要的主题。通常的事情是通过在
subscribeToTopic()
中添加 onTokenRefreshed()
来完成(在 Android 中)。
- 我是否必须删除旧令牌并将新令牌添加到设备组?
是的。您必须处理设备组消息传递的映射/关系。请参阅我的回答这里。这与主题不同。该令牌将失效,但将作为相应注册密钥的注册令牌列表的一部分保留。
这就是为什么如果您发送到设备组,其中一个令牌可能会收到
NotRegistred
错误的原因。 :)
- 是否可以获取有关令牌的设备组/主题的信息?
对于设备组消息传递(与#2 相同),开发人员(您)必须自己管理这些详细信息。对于主题,您可以使用 InstanceID API。具体来说,将
details
参数设置为 true
:
[可选] boolean
:将此查询参数设置为details
以获取可用的 IID 令牌详细信息,包括与此令牌关联的设备的连接信息和 FCM 或 GCM 主题订阅信息(如果有)。未指定时,默认为true
。false
- 我可以多次向设备组添加令牌吗?
嗯。是的。您的意思是 same 标记吗?如果是这样,我还没有尝试过。添加之前不妨在客户端进行一些检查。
- 我可以多次订阅一个主题的代币吗?
如果您的意思是重新订阅,那么是的。如果你的意思是重复请求订阅,我认为结果仍然会成功。但行为没有改变。
- 同一个token的多次订阅/添加会导致收到重复的消息吗?
测试了一下。对于重复的主题订阅和将相同的令牌添加到设备组,您不会收到重复的消息。如果 FCM 已订阅/添加到设备组,则 FCM 似乎会忽略订阅/添加注册令牌的请求。
想听听人们对上面@Ced 提出的问题的想法