【问题标题】:Firebase : Removing chat conversation + messages from one sideFirebase:从一侧删除聊天对话+消息
【发布时间】:2016-11-08 15:13:02
【问题描述】:

您好,我正在制作一个聊天应用程序。这是我用于存储消息和聊天对话的结构。

"messages":{
  "ChatKey1":{
       "msg1":{
          "content":"hello",
          "timeStamp":"123344",
          "223232334sdsd":"false",
           "ssfdsfsfdsfsdf":"false"
    },
    "msg2":{
        "content":"Hi",
        "timeStamp":"123344",
        "ssfdsfsfdsfsdf":"false",
         "223232334sdsd":"false"
    }
}
"Chats_Conversation":{
    "UserID":{
    "ChatKey1":{
        "senderId":"223232334sdsd",
        "receiverID":"ssfdsfsfdsfsdf",
        "lastMessage":"hi"
    }
}

其中 223232334sdsd 是发送者 ID,ssfdsfsfdsfsdf 是接收者 ID。两者都在收听消息中的 chatKeys1。现在我想从发送方删除 msges 吗?如果我删除消息。它会从两边移除吗?我糊涂了。有人可以在这里帮助我吗?我怎样才能从一侧删除消息

【问题讨论】:

  • 你不必删除它。如果他只发送消息,您存储任何内容并跳过更新视图。我想你甚至需要他自己的 FCM 消息来确认消息是从他身边发出的
  • 你的意思是这样说跳过消息.. query.orderByChild("timeStamp").startAt("timeStamp").limitToLast(500).addValueEventListener(new) 其中timeStamp是从我想在哪里显示消息
  • 您可以删除消息中对发送者的引用,使其仅适用于接收者。
  • @LalitBagga 你找到答案了吗?因为是的,如果对话被双方访问,删除它会删除整个集合...
  • 有人找到解决方案了吗?

标签: android firebase android-recyclerview firebase-realtime-database


【解决方案1】:

我将添加 2 个布尔字段,一个用于 isDeletedReceiver,另一个用于 isDeletedSender,然后运行逻辑 if else 检查,假设发送方选择删除,我将检查它是否为接收方删除,如果它是真的,我'将从数据库中完全删除它,如果它为假,我将显示类似'此消息已删除'的文本而不是原始数据,如果检查返回 isDeletedReceiver 的真值,我将删除文档完全来自数据库,因为没有人需要它。所以总而言之,如果删除,你只需要切换到 true。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2016-04-21
    • 1970-01-01
    • 1970-01-01
    • 2021-05-06
    • 2016-02-25
    • 2021-02-04
    • 1970-01-01
    相关资源
    最近更新 更多