如何在firebase chat app-android中实现删除功能

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

最近我执行了这个功能。所以你可以通过添加一些功能来实现这一点。首先,您需要像这样在消息中再添加一个节点

<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>
           ....
Run Code Online (Sandbox Code Playgroud)

所以技巧是当任意两个用户之一删除对话时,将他的用户 ID 存储在deleted节点中,并在代码中检查当您收到来自 firebase 的所有消息时,如果deleted节点具有相同的 uid,则不要添加此消息(意味着此消息是被用户删除)。

现在,您可以删除单个消息或整个对话,然后如果其他用户也删除了该对话或单个消息,那么您必须检查deleted节点中是否有任何 uid 作为值,如果是,则删除整个消息。

我遵循了技术。投票是否对你有帮助