将uid用作Firebase消息传递主题?

将uid用作Firebase消息传递主题?,firebase,firebase-cloud-messaging,Firebase,Firebase Cloud Messaging,我最近问了一个问题,如何使用Firebase消息的主题向组中的每个人发送消息,但触发通知的人除外(向数据库中的组部分写入)。我得到了一个有趣的答案,包括为iOS应用程序的每个用户制作一个主题,然后使用为每个成员制作的主题向组中的每个成员发送一条消息。主题的名称将只是个人的uid,因此我只需遍历组成员的uid,并向其相应的主题发送消息(忽略触发用户的uid) 使用此解决方案意味着我的应用程序的每个用户都有自己的主题(/topics/,/topics/,等等)。我想知道这样做是否有缺点。这将简化我发

我最近问了一个问题,如何使用Firebase消息的主题向组中的每个人发送消息,但触发通知的人除外(向数据库中的组部分写入)。我得到了一个有趣的答案,包括为iOS应用程序的每个用户制作一个主题,然后使用为每个成员制作的主题向组中的每个成员发送一条消息。主题的名称将只是个人的uid,因此我只需遍历组成员的uid,并向其相应的主题发送消息(忽略触发用户的uid)


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

我在这篇博文中使用了类似的方法:。唯一的区别是我们在那里使用用户名,以使用例更易于阅读

这种方法有几个问题:

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

    • 我在这篇博文中使用了类似的方法:。唯一的区别是我们在那里使用用户名,以使用例更易于阅读

      这种方法有几个问题:

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

      在这种情况下,使用它会更好吗?我很难理解如何在firebase云函数中实现这一点。@MarksCode注意,设备组消息传递限制为每个组20个令牌。设备组通常用于针对同一用户的多个设备。所以,如果这就是你想要实现的,那么它们确实可能是一个很好的匹配。在这种情况下,使用它们会更好吗?我很难理解如何在firebase云函数中实现这一点。@MarksCode注意,设备组消息传递限制为每个组20个令牌。设备组通常用于针对同一用户的多个设备。因此,如果这就是你想要实现的目标,那么它们确实可能是一个很好的匹配。