如何在Firebase实时数据库中的每个新条目之后使用FCM发送通知?

如何在Firebase实时数据库中的每个新条目之后使用FCM发送通知?,firebase,firebase-realtime-database,firebase-cloud-messaging,Firebase,Firebase Realtime Database,Firebase Cloud Messaging,我有一个使用Firebase实时数据库的群组消息应用程序。我正在尝试设计一种方法,每当用户发送消息时,所有组成员都会收到消息通知 以下是我的数据库结构 plan-129a0 | -- plan | -- LVAMCUC8S0S6tuTtLjk | -- exp_duration: "same_day" | -- members

我有一个使用Firebase实时数据库的群组消息应用程序。我正在尝试设计一种方法,每当用户发送消息时,所有组成员都会收到消息通知

以下是我的数据库结构

plan-129a0
    |
    -- plan
         |
         -- LVAMCUC8S0S6tuTtLjk
            |
            -- exp_duration: "same_day"
            |
            -- members
                |
                -- 0: member_id
                |
                -- 1: member_id
            |
            -- messages
                |
                -- LVAMDqIHDrTDeTUrfkM
                |
                -- msgTime: 
                |
                -- name:
                |
                -- text: "Hello World"
            |
            -- name: "Plan one"
            |
            -- plan_admin: 
            |
            -- timeCreated: "Wed"

    user
      |
      -- LT46t95CKQ9dFgXv-JF
            |
            -- name:
            |
            -- number:
            |
            -- uid:
每当messages节点中有新条目时,我都会尝试向members节点中的每个用户发送通知。我的问题是Firebase云功能能否实现这一任务


我所经历的关于如何实现这种状态的一些帖子中提到,我需要为每个设备提供一个令牌,以便向它们发送通知。这个令牌是什么?我如何在Android中为每个注册到我的应用程序的设备获取这个令牌?

所以听起来你想向组中的所有成员发送消息。这意味着您必须以某种方式知道组成员正在哪些设备上使用该应用程序。安装应用程序的每个设备都由所谓的应用程序实例ID(通常也称为FCM令牌)标识,因此您基本上需要将这些令牌/ID映射到应用程序的组

使用FCM执行此操作有两个选项:

  • 使用主题来标识每个组

    这意味着该应用程序应该为该用户所属的每个组提供服务。然后,要向该组发送消息,请调用FCM API

    在该选项中,FCM为您管理组和令牌之间的关系,并处理组到令牌列表的扩展

  • 跟踪与每个组相关的应用程序实例

    这意味着您需要为每个用户创建一个数据库,并将它们存储在您自己的数据库中,记住可能有多个,并且它们可能会过期。然后,当您想要向一个组发送消息时,您可以查找该组的所有ID/令牌,并调用FCM API

    在此选项中,您自己管理组和令牌之间的关系。这使您具有更大的灵活性,但也意味着您必须在管理数据方面做更多的工作