|
1
2
如果我理解这个问题,这个应用程序有多个用户,这些用户可以有1-1或1-many聊天,你要避免用户获得他们不参与的聊天事件。 让我们从用户节点开始
然后是一个简化的聊天节点
在上面的例子中,当用户开始聊天时,chat\u id\u x是用.childByAutoId创建的。
比尔和杰西正在chat\u id\u 0中聊天,比尔正在等待任何同时观看chat\u id\u 6的用户的回复,杰西正在chat\u id\u 9中与uid\u 7对话。 任何时候只要有一个事件(例如,当一条新消息被添加到聊天中时,添加了childAdded),只有那些观察该聊天的用户(“subscribed”)才会收到一个事件。 显然,每个聊天节点都会包含更多的细节(时间戳等)
一种是,当一个观察者被添加到您所属的每个聊天中时(.childAdded),该聊天节点中的每个子节点都将返回到您的应用程序。这有两个好处-一是用现有的聊天信息填充UI,二是。。。你就会知道谁参与了那次谈话。将这些UID与chat id放在一个数组中,在向此人发送聊天之前,查看它们是否作为现有聊天存在于数组中。 第二个选项是查询用户uid出现在其中的所有聊天记录(使用.observeSingleEvent进行查询)。它将返回他们所属的所有聊天节点,然后有他们聊天对象的uid和聊天id。
|