有几种方法可以发送FCM消息,即使我一遍又一遍地阅读文档,我也不知道该使用哪一种。
我的用例: 我有一个用户在她的iPhone,iPad和Android平板电脑上登录了该应用程序。我想确保推送通知发送到她的所有设备。
有三种方法可以做到这一点(我正在使用管理员发送推送通知(:
-
主题消息(消息传递((.sendToTopic(:我的理解是将相同的通知发送到更大的组。例如,主题可以是希望获得纽约天气通知的所有用户。不适用于我的用例。
发送多播(消息(( .send多播([令牌数组](:我的理解是,这将向数组中的所有设备令牌(最多 100 个(发送相同的消息。这似乎非常适合我的用例,对吧?
设备组消息传递(messaging((.sendToDeviceGroup(:我真的不明白这个。为什么使用它而不是多播或主题?
对于我的用例,似乎最好的方法是每次更新 FCM 令牌时,我都会将此令牌添加到数据库中的用户。然后,我使用 admin.messaging((.sendMulticast([令牌数组](发送通知。这是你会推荐的吗?为什么或为什么不呢?
如果您面向单个用户的特定设备,则可能需要使用多播。 你可能不想使用设备组。 我建议阅读文档以了解设备组的工作原理:
设备组消息传递允许您将多个设备添加到单个组。这类似于主题消息传递,但包括身份验证以确保组成员身份仅由您的服务器管理。例如,如果要向不同的手机型号发送不同的消息,则服务器可以向相应的组添加/删除注册,并将相应的消息发送到每个组。设备组消息传递与主题消息传递的不同之处在于,它涉及从服务器而不是直接在应用程序中管理设备组。
设备组基本上只是其成员身份完全由服务器代码管理的主题,而不是由客户端代码管理。