gpt4 book ai didi

android - 带有未读消息计数器和最后一条消息的 Google Firebase 实时数据库架构的聊天消息

转载 作者:塔克拉玛干 更新时间:2023-11-02 20:31:55 24 4
gpt4 key购买 nike

我正在为 Android 应用程序创建一个聊天部分。通过使用谷歌 Firebase .以下任务已经完成

创建聊天节点2.使用两个用户信息分离特定的聊天线程。3.阅读单个聊天线程的所有消息。

现在我的问题在下面。1. 如何通过单个聊天线程检索最后一条消息。2. 如何创建一个数据库,我可以在其中获取未读消息计数器的计数器。

我的聊天数据库附件和下面的目标。

当前目标。 enter image description here

已经完成。

enter image description here

Firebase 数据库架构。

enter image description here

现在如何更容易地创建数据库来解决这个问题。

最佳答案

Firebase 有自己的构建聊天平台的示例项目,Firechat .该项目在其 doc 中得到了很好的解释。 .他们使用的数据结构可以在文档的末尾看到。您可以使用他们的数据结构。但对于您的情况,您可能没有任何版主,因此我们可以让它变得更简单一些。

所以,你可以这样组织它:

main-data
|__messageThread (all data about msgs)
| |__threadId (unique id for msg thread)
| |__chatId (unique id for chat msgs)
| |__userId
| |__userName
| |__chatMessage
| |__chatTimestamp
|
|__messageThreadMetadata
| |__threadId
| |__createdAt
| |__createdByUserId
| |__threadId
| |__threadName
| |__threadType (public/private)
| |__lastChatId (id for last chat, use this to lookup in messageThread)
|
|__users
| |__userId
| |__userId
| |__userName
| |__activeThreads (list of ids of active threads used by user)
|
|__unseenMsgCountData
| |__threadId
| |__userId
| |__unseenMsgCount

回到你的问题:

  1. 如何获取线程中的最后一条消息?请使用线程中的节点 lastChatId 并使用它来查找相应的 chatMessage.

  2. 如何获取用户线程中未看到的消息数?这是一个对每个线程和每个用户都是主观的数据。同一个线程可能有两个或更多用户,每个用户都有不同的未见消息计数。因此,您可以使用 unseenMsgCountData 来检查 threadId 和 userId。每当有人发布聊天时,在该线程中将聊天线程关闭的其他用户的看不见的消息计数器增加 1(使用来自用户的 activeThreads 列表来跟踪他是否活跃在线程中或不是)。不要为他增加计数器,这个消息不是他自己的看不见的消息)。当任何其他用户打开该线程时,为他将值重置为零。

希望这对您有所帮助。如果需要任何进一步的解释或帮助,请敲这里。

关于android - 带有未读消息计数器和最后一条消息的 Google Firebase 实时数据库架构的聊天消息,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38935609/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com