使用uid作为Firebase Messaging主题?

时间:2017-04-13 20:33:59

标签: firebase firebase-cloud-messaging

我最近问了一个SO question,询问如何使用Firebase Messaging的主题向群组中的每个人发送消息,但触发通知的人除外(写入数据库中的组'部分) 。我得到了一个有趣的答案,涉及为我的iOS应用程序的每个用户创建一个主题,然后使用为每个成员创建的主题向组的每个成员发送一条消息。该主题的名称只是该人的名字,所以我只是遍历该组的成员' uid并向相应的主题发送消息(忽略触发用户的内容)。

使用此解决方案意味着我的应用程序的每个用户都有自己的主题(/topics/<uid1>/topics/<uid2>等)。我想知道做这样的事情是否有任何缺点。它将简化我的云功能以发送消息,但我不确定在成本和性能方面是否有这么多主题是昂贵的。任何人都可以帮我弄清楚这是否是一个好的解决方案?

1 个答案:

答案 0 :(得分:4)

我在这篇博文中使用了类似的方法:Sending notifications between Android devices with Firebase Database and Cloud Messaging。唯一的区别是我们在那里使用用户名,以便更容易阅读用例。

这种方法存在一些问题:

  • 主题是公开的,任何人都可以订阅主题。在您的情况下,UID可能不如博客文章中的用户名可猜测,但它仍然不安全。
  • FCM针对包含大量令牌的合理数量的主题进行了优化。因此,它在技术上可以使用更小的主题,但它不是为此而设计的。 YMMV