【问题标题】:Using uid as Firebase Messaging topics?使用 uid 作为 Firebase 消息传递主题?
【发布时间】:2017-04-14 04:55:45
【问题描述】:

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

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

【问题讨论】:

    标签: firebase firebase-cloud-messaging


    【解决方案1】:

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

    这种方法的一些问题:

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

    【讨论】:

    • 在这种情况下使用Device Group Messaging 会更好吗?我只是很难看到如何在我的 firebase 云功能中实现这一点。
    • @MarksCode 请注意,Device Group Messaging 每个 group 限制为 20 个令牌。
    • 设备组通常用于定位同一用户的多个设备。因此,如果这就是您想要实现的目标,那么它们确实可能是一个不错的选择。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-02-28
    • 2022-11-06
    • 1970-01-01
    • 1970-01-01
    • 2022-12-10
    • 2020-02-03
    相关资源
    最近更新 更多