av *_*ent 0 android firebase firebase-realtime-database
我正在使用 firebase 开发一个简单的聊天应用程序,到目前为止,用户身份验证、创建好友列表、发送和接收 msg 功能都已完成。现在我在对话活动中添加了一个名为“删除对话”的菜单项,显然这将清除对话消息。
现在让我告诉您存储在 firebase 数据库中的 msg 的数据库结构。
> messages
> <ConversationId>
> <MsgId>
> text:"hello"
> timestamp:<timestamp>
> sender:<sender's uid>
> receiver:<receiver's uid>
> <MsgId>
> ....
Run Code Online (Sandbox Code Playgroud)
所以,我的问题是,对话至少包括 2 个用户。对。所以,假设我实现了一个删除对话来删除特定对话 ID 中的所有条目。它将删除该会话 ID 下的所有数据。但假设只有用户 1 单击删除对话...用户 2 想要所有对话。那我该如何实施呢?我需要创建本地数据库吗?存储和同步用户手机中的所有消息?
小智 5
最近我执行了这个功能。所以你可以通过添加一些功能来实现这一点。首先,您需要像这样在消息中再添加一个节点
Run Code Online (Sandbox Code Playgroud)<ConversationId> <MsgId> text:"hello" timestamp:<timestamp> deleted:<user uid> //id of first user who deleted the conversation sender:<sender's uid> receiver:<receiver's uid> <MsgId> ....
所以技巧是当任意两个用户之一删除对话时,将他的用户 ID 存储在deleted节点中,并在代码中检查当您收到来自 firebase 的所有消息时,如果deleted节点具有相同的 uid,则不要添加此消息(意味着此消息是被用户删除)。
现在,您可以删除单个消息或整个对话,然后如果其他用户也删除了该对话或单个消息,那么您必须检查deleted节点中是否有任何 uid 作为值,如果是,则删除整个消息。
我遵循了技术。投票是否对你有帮助
| 归档时间: |
|
| 查看次数: |
2164 次 |
| 最近记录: |