FCM将消息发送到多个设备-使用哪种方式?

时间:2020-05-27 15:41:41

标签: firebase firebase-cloud-messaging

有几种发送FCM消息的方法,即使我一遍又一遍地阅读文档,我也不知道该使用哪种消息。

我的用例: 我有一个在她的iPhone,iPad和Android平板电脑上登录该应用程序的用户。我想确保将推送通知发送到她的所有设备。

有三种方法可以做到这一点(我正在使用管理员发送推送通知):

  • 主题消息(messaging()。sendToTopic):我的理解是,这是向更大的组发送相同的通知。例如,一个主题可能是想要纽约天气通知的所有用户。不适用于我的用例。

  • 发送多播(messaging()。sendMulticast([令牌数组])::我的理解是,这会将相同的消息发送到数组中的所有设备令牌(最多100个)。这对于我的用例来说似乎很完美,对吧?

  • 设备组消息传递(messaging()。sendToDeviceGroup):我不太了解这一点。为什么用它代替多播或主题?

对于我的用例,似乎最好的方法是每次更新FCM令牌时,都将此令牌添加到数据库中的用户。然后,我使用admin.messaging()。sendMulticast([令牌数组])发送通知。这是您会建议的吗?为什么或为什么不呢?

1 个答案:

答案 0 :(得分:0)

如果要针对单个用户的特定设备,则可能要使用多播。您可能不想使用设备组。建议您阅读documentation来了解设备组的工​​作原理:

设备组消息传递使您可以将多个设备添加到单个组中。这类似于主题消息传递,但包括身份验证以确保仅由您的服务器管理组成员身份。例如,如果要将不同的消息发送到不同的手机型号,则服务器可以将注册添加/删除到适当的组,并将适当的消息发送到每个组。设备组消息传递与主题消息传递的不同之处在于,它涉及从服务器而非直接在应用程序内部管理设备组。

设备组基本上只是主题,其成员资格完全由服务器代码而非客户端代码来管理。