私人聊天应用程序 - Parse 和 Swift
Posted
技术标签:
【中文标题】私人聊天应用程序 - Parse 和 Swift【英文标题】:Private Chat App - Parse and Swift 【发布时间】:2015-12-22 23:13:57 【问题描述】:我想构建一个私人聊天应用程序。我的设计现在只是一个 UITableView,我正在使用 Parse(快速编码)。 现在我让发送和接收部分正常工作(每个动画,比如随着键盘和所有内容增长的文本字段),但我正在查询“消息”类上的每条消息,而不仅仅是从 user1 发送到 user2 的消息。 ..你们中的任何人都知道如何只查询特定对象吗?我该怎么办?
感谢您的帮助
PS:我在问这个问题之前搜索了很长时间,但我找不到任何东西。
【问题讨论】:
您的消息表希望有两个用户字段指示参与对话的塔用户。 (如果您有组,甚至是一组用户)。然后使用where
减少匹配行的数量,例如findMessages.whereKey("otherUser", equalTo: conversationPartner)
等。
我不应该收到发送给该用户的每条消息吗?
这是一个非常简化的示例,包括第二个执行第二个用户的示例
你可以使用 query.whereKey("sender", equalTo: "user1") 或类似的东西
【参考方案1】:
我相信真正的答案在于改变模型的结构。我建议在解析时创建一个名为“对话”的类。此类将具有:
一个名为“messages”的成员(它是会话中发送/接收的所有消息的数组)
名为“participants”的成员 - 对话中参与者 id 的字符串数组(id 可以是他们的对象 id)
然后您所要做的就是查询类 Conversation whereKey("participants", containsIn: ids) 其中“ids”是参与者对象 ID(或您希望的任何 ID)的 [String]。
这个设计就是Layer使用的:https://layer.com/
【讨论】:
感谢您的建议!我应该把消息作为指针吗?如果是,我该怎么做?如果没有:我该如何查询消息呢? 我创建了课堂对话,但它的方式是,每次你联系一个人时,你都会创建一个新的对话,这不是我正在寻找的……你有办法吗?如果已经有对话,则重新打开对话? 我不确定你的第一个问题是什么意思?至于你的第二个问题,你可以在创建一个之前查询对话并检查该查询是否返回一个对象,如果是,那么你知道它存在并且你不必让另一个人做一个新的 如果我创建一个对话,我相信我应该将消息放在一个数组中以便一次性获取所有消息,但是我怎样才能将这些消息放在一个数组中以获取它们的所有数据(创建日期和文本) ?我相信它应该是一个指针吧?但是我怎样才能像一个指针数组 另外,如何查询发送者和接收者的姓名?【参考方案2】:我认为 parse 不适合聊天应用程序,因为聊天需要实时和同步,所以我建议 Firebase 或 Pusher 两个套接字系统都有实时更新,它们是为聊天应用程序构建的。
另一方面,如果你坚持使用解析,也许你可以使用,
PFObject+objectWithoutDataWithClassName:objectId:
方法链接如下,
https://parse.com/docs/ios/api/Classes/PFObject.html#/c:objc(cs)PFObject(cm)objectWithoutDataWithClassName:objectId:
还找到了 firebase 示例聊天应用 here。
【讨论】:
有没有办法让我的应用同时使用这两种方法(Parse 和 Firebase)?因为我真的不想用不同的后端系统重新开始以上是关于私人聊天应用程序 - Parse 和 Swift的主要内容,如果未能解决你的问题,请参考以下文章
我想用 React 和 Django 制作一个用户到用户的私人实时聊天应用程序