首页 文章

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

提问于
浏览
14

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

为了能够接收消息,您需要注册令牌(RT) . 消息可以发送到RT,主题或设备组 notification_key . 也可以使用RT:

直接

  • 订阅主题

  • 添加到设备组

RT也可以过期/更改 .

在我的应用程序中,我正在维护每个用户的RT列表 . 现在,当RT改变时:

  • 我是否必须取消订阅旧令牌并将新令牌订阅到主题?

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

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

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

  • 我可以多次为某个主题订阅一个令牌吗?

  • 同一令牌的多个订阅/添加将导致接收重复消息

对不起,这是很多问题,但我想,对于那些经历过这个问题的人来说,它应该是馅饼;)

1 回答

  • 12

    我是否必须取消订阅旧令牌并将新令牌订阅到主题?

    AFAIK,你不得不订阅你需要的主题 . 通常在 onTokenRefreshed() 中使用 subscribeToTopic() 来完成(在Android中) .


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

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

    如果您发送到设备组,它可能会在其中一个令牌上收到 NotRegistred 错误 . :)


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

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

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


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

    Ahmm . 是 . 你的意思是一样的吗?如果是这样,我还没有尝试过 . 在添加之前,还可以在客户端进行一些检查 .


    我可以多次为某个主题订阅令牌吗?

    如果您的意思是重新订阅,那么是的 . 如果您的意思是重复订阅请求,我认为结果仍然会成功 . 尽管如此,行为没有变化 .


    同一令牌的多个订阅/添加是否会导致接收重复的消息?

    测试出来了 . 您不会收到重复主题订阅的重复消息,也不会向设备组添加相同的令牌 . 似乎FCM忽略了订阅/添加注册令牌的请求,如果它已经订阅/添加到设备组 .

相关问题