私人聊天应用程序 - 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的主要内容,如果未能解决你的问题,请参考以下文章

使用 Swift 在 Parse Server 中触发

订阅 AWS AppSync 中的群组/私人聊天列表

我想用 React 和 Django 制作一个用户到用户的私人实时聊天应用程序

socket.io 与私人房间聊天

在 PHP 中使用 Node.js、Socket.io、Redis 的私人聊天消息

Node 和 Socket.IO - 私人聊天(一对一)