android - 是否有任何功能可以帮助在颤振应用中添加朋友并对其进行排序?
问题描述
我正在开发一个使用颤振和火力作为后端的聊天应用程序,我想要这些功能,
我需要实现一个添加朋友功能并将其添加到联系人列表中。
每当用户与联系人交谈时,其聊天室都会像信使一样在列表中排序到顶部。
我该怎么做,我应该使用firestore还是数据库?链接到该项目的 GitHub 存储库:https ://github.com/Maxcousin123/whatzapp.git
提前致谢
解决方案
将 Firestore 用于聊天应用程序可能不是最好的方法,因为它需要大量的读取和写入,而且 Firestore 的速率更多地取决于读取和写入而不是存储。
对于实时更新,请使用它,FireStore
因为它提供的数据流在使用StreamBuilder
.
创建 Firestore 集合
chats
在这个集合中,为每个用户维护一个唯一的文档,userId 为 documentId
创建一个名为的子集合,
chatRooms
并为每个chatRooms
文档创建一个字段lastMessageTime
,用于排序。
您的 Firestore 结构应如下所示,
- 聊天(收藏)
|- 用户名
|- 聊天室(子集合)
|- 聊天室 ID
|- lastMessageTime(时间戳 - 字段)
- lastMessageData(字符串 - 字段)
- 消息(子集合)
- 聊天室 ID
- 聊天室(子集合)
- 用户名
要获取顶部有最新活动的聊天室,chatRooms
请根据 对集合中的数据进行排序TimeStamp
。
Firestore.instance
.collection("chat").doc(user.id).collection("chatRooms")
.orderBy('lastMessageTime', descending: true).getDocuments()
PS:这可能不是最好的解决方案,但你可以通过尝试来学习。
推荐阅读
- vue.js - 不同路线上的相同动态页面?
- rounding - 舍入浮点数返回所有小数
- apache - 如何检查静态文件缓存是否在使用 ea4 构建的 Apache 中工作?
- laravel - 使用 laravel 中的数据从控制器重定向到命名路由
- php - 无法在 OVH Perso Hosting 上增加 PHP max_execution_time
- javascript - 通过 js 在 R 中设置默认 textInput 值(作为 js 函数的结果)
- javascript - 如何在javascript中将字符串对象转换为json对象
- ios - DatePicker 在 iPhone 上的 UINavigationBar 下,在 iPad 上运行良好
- reactjs - 编译失败:找不到模块:无法解析 'c:\xampp\htdocs\reactjs\src' 中的 './components/MyInfo'
- c++ - 从具有多态性的类中检索数据