我正在我的iOS应用程序中实现聊天逻辑1-1.我正在使用firebase在聊天中存储聊天和消息.消息很好用.但我对聊天列表有一些困难.
我存储的聊天结构看起来像这样
我存储的聊天结构看起来像这样
-Users --UserID ---chatrooms ----chatroomID -----updatedTime -----deleted -----read -----receiverID -----receiverName
我存储在NSUserDefaults NSDate值“chatsLoadedTime”.我通过发送查询来查询聊天:
var time: String? if defaults.valueForKey("chatsLoadedTime") != nil { time = "\(defaults.valueForKey("chatsLoadedTime") as! NSDate)" } chatsRef.queryOrderedByChild("createdTime").queryStartingAtValue(time).observeEventType(.Value,withBlock: { snap in defaults.setValue(toLocalTime(NSDate()),forKey: "chatsLoadedTime") and so on . . .
据我所知,这是一种存储聊天并能够从不同设备下载聊天的好方法.例如我刚安装了应用程序,我的chatsLoadedTime值为nil,然后我下载所有聊天并将此值更新为当前dateTime.如果创建了新聊天,那么其createdTime比我的chatsLoadedTime值更大,应用程序将下载它.
但我不知道如何实现删除聊天的好方法.我想要这个逻辑:如果user1删除了聊天,那么他只需更改他的值deleted = true.如果第二个用户也在他身边删除了这个聊天,那么聊天和消息将完全从应用中删除.如果user1删除了chat,但user2没有,那么如果user2写入user1,则user1会收到此消息以及之前的所有消息,因为消息未被删除.但也许这不是最好的逻辑.给m,请以最好的方式建议如何做到这一点.
如果可以,我想查询多个值,但据我所知,这是不可能的.