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