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

Mar*_*tin 5 firebase firebase-cloud-messaging

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

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

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

  • 主题消息传递(messaging().sendToTopic):我的理解这是为了向更大的组发送相同的通知。例如,主题可以是所有想要纽约天气通知的用户。不适合我的用例。

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

  • 设备组消息传递(messaging().sendToDeviceGroup):我不太明白这一点。为什么使用它而不是多播或主题?

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

Dou*_*son 4

如果您的目标是单个用户的特定设备,您可能需要使用多播。您可能不想使用设备组。我建议阅读文档以了解设备组的工​​作原理:

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

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