我正在使用firebase进行聊天活动。我列出了我的recyclerview中的所有用户联系人姓名,当点击特定联系人时,我打开一个名为chat.in的用户发送消息的新活动。要将消息推送到firebase我使用foll代码
mMessagesDatabaseReference = mFirebaseDatabase.getReference().child("messages");
现在我的孩子被命名为#34;消息",但所有用户都能看到每个人的消息,因为我只有一个孩子。 我的问题是我应该如何在firebase数据库中为我的孩子命名它应该是唯一的。例如,如果A消息到B和B消息到A,我想为他们单独的子节点。类似于其他用户。 有人可以帮帮我吗?
答案 0 :(得分:0)
您可以执行Firebase RealtimeDB文档推荐的基本结构:
{
// Chats contains only meta info about each conversation
// stored under the chats's unique ID
"chats": {
"one": {
"title": "Historical Tech Pioneers",
"lastMessage": "ghopper: Relay malfunction found. Cause: moth.",
"timestamp": 1459361875666
},
"two": { ... },
"three": { ... }
},
// Conversation members are easily accessible
// and stored by chat conversation ID
"members": {
// we'll talk about indices like this below
"one": {
"ghopper": true,
"alovelace": true,
"eclarke": true
},
"two": { ... },
"three": { ... }
},
// Messages are separate from data we may want to iterate quickly
// but still easily paginated and queried, and organized by chat
// conversation ID
"messages": {
"one": {
"m1": {
"name": "eclarke",
"message": "The relay seems to be malfunctioning.",
"timestamp": 1459361875337
},
"m2": { ... },
"m3": { ... }
},
"two": { ... },
"three": { ... }
}
}
答案 1 :(得分:0)
我建议创建一个这样的结构:
因此,您不必创建一堆消息,而是先为每个对话创建数据库结构。有点像oldskool聊天室。
然后,您将新消息推送到名为" messages"的孩子下的每个聊天中。除了实际文本外,每条消息都应包含对作者的引用。
您可以在https://github.com/henrikenblom/chatapp查看我的玩具聊天项目,获取灵感。它是用Kotlin编写的,但它不应该很难翻译成Java。