我最近问了一个 SO 问题,询问如何使用 Firebase 消息传递主题向群组中的每个人发送消息,但触发通知的人除外(写入数据库中的群组部分)。我得到了一个有趣的答案,涉及为我的iOS应用程序的每个用户创建一个主题,然后使用为每个成员创建的主题向组中的每个成员发送一条消息。主题的名称只是该人的 uid,因此我只是遍历组成员的 uid,并向相应的主题发送消息(忽略触发用户的 uid)。
使用此解决方案意味着我的应用程序的每个用户都有自己的主题(/topics/<uid1>
、/topics/<uid2>
等)。我想知道做这样的事情是否有任何缺点。它将简化我发送消息的云功能,但我不确定拥有这么多主题在成本和性能方面是否昂贵。谁能帮我弄清楚这是否是一个好的解决方案?
我在这篇博文中使用了类似的方法:在具有Firebase Database和Cloud Messaging的Android设备之间发送通知。唯一的区别是我们在那里使用用户名,以使用例更易于阅读。
此方法存在一些问题:
主题- 是公开的,任何人都可以订阅主题。在您的情况下,UID 可能不如博客文章中的用户名容易猜测,但它仍然不安全。
- FCM 针对具有大量令牌的合理数量的主题进行了优化。因此,从技术上讲,它将适用于更多较小的主题,但它不是为此而设计的。扬子晚报