Firebase Real-time数据库中的每个新条目之后,如何使用FCM发送通知?

时间:2019-07-09 06:39:09

标签: firebase firebase-realtime-database firebase-cloud-messaging

我有一个使用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:

每当消息节点中有一个新条目发送给成员节点中的每个用户时,我都试图发送通知。我的问题是Firebase Cloud Functions可以完成此任务吗?

关于如何实现此状态的一些帖子,我需要为每个设备添加令牌才能向其发送通知。什么是令牌?如何在Android中为每一个向我的应用程序注册的设备获取令牌?

1 个答案:

答案 0 :(得分:0)

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

对于FCM,您有两种选择:

  1. 使用主题标识每个组

    这意味着应用程序应该为用户所属的每个组subscribe to the topic。然后,要向该组发送消息,请将FCM API调用到send a message to that group's topic

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

  2. 跟踪与每个组相关的应用实例

    这意味着您需要为每个用户get the App Instance IDs/FCM tokens并将其存储在您自己的数据库中,请记住可能有多个用户,并且它们可能会过期。然后,当您想向某个组发送消息时,您将查找该组的所有ID /令牌,然后将FCM API调用到send a message to a list of tokens

    在此选项中,您将自己管理组和令牌之间的关系。这样可以为您提供更大的灵活性,但也意味着您必须在管理数据上做更多的工作。