我有一个使用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中为每一个向我的应用程序注册的设备获取令牌?
答案 0 :(得分:0)
因此,听起来您想向组中的所有成员发送消息。这意味着您必须以某种方式知道组的成员正在使用该设备的设备。安装该应用程序的每台设备均由所谓的“应用程序实例ID”(通常也称为FCM令牌)标识,因此,您基本上需要将这些令牌/ ID映射到应用程序的组。
对于FCM,您有两种选择:
使用主题标识每个组
这意味着应用程序应该为用户所属的每个组subscribe to the topic。然后,要向该组发送消息,请将FCM API调用到send a message to that group's topic。
在此选项中,FCM为您管理组和令牌之间的关系,并处理组到令牌列表的扩展。
跟踪与每个组相关的应用实例
这意味着您需要为每个用户get the App Instance IDs/FCM tokens并将其存储在您自己的数据库中,请记住可能有多个用户,并且它们可能会过期。然后,当您想向某个组发送消息时,您将查找该组的所有ID /令牌,然后将FCM API调用到send a message to a list of tokens。
在此选项中,您将自己管理组和令牌之间的关系。这样可以为您提供更大的灵活性,但也意味着您必须在管理数据上做更多的工作。