使用Parse在消息传递应用程序中存储消息和讨论

时间:2014-06-21 19:29:41

标签: ios objective-c xcode5 parse-platform messaging

我正在使用Parse作为后端为iOS创建一个消息传递应用程序,我正在尝试提供用于存储消息/讨论的模式。存储消息是直截了当的,但人们如何存储讨论,因为讨论涉及一组具有一个或多个用户的消息,并且可以作为整体删除。这只是一个聪明的查询消息类,还是整个类本身?

使用Parse的Messages类和Discussions的典型架构是什么样的?

提前感谢您的帮助!

PS。任何人都可以推荐任何非常好的第三方库来制作类似于Facebook Messenger的消息传递屏幕。

2 个答案:

答案 0 :(得分:2)

如果你使用Parse作为后端,那么最好的功能就是PFRelation。对于您的_User对象,您可以拥有PFRelation类型的属性,其目标类为Discussions(您的自定义类,您可以随意调用它)。一个Dicussions对象本身可能有一个属性的数组,参与讨论的人只有他们的objectIds("参与者"也许)。另一个拥有"阵列的属性"消息(这在技术上是PFRelation属性,但如果文档会让你知道,这在技术上不是一个数组)。因此,要查询用户所参与的讨论,您可以在Discussions对象类上进行查询,其中Key:@" partcipants" equalTo:[PFUser currentUser] .objectId

一个重要的注意事项是,您可以轻松地从PFRelation属性中删除/添加对象,但这些对象尚未被提取,您必须首先获取PFRelation中的项目才能访问它们。 (如果你去看文档,你会看到这个)因为这个原因你必须在对它们进行实际查询之前在PFRelation中获取对象。

您的用户数组可以只包含其objectIds的原因是为了避免在PFRelation中实际获取对象所需的时间。请记住,在查询数组属性时,whereKey:equalTo:方法检查equalTo:旁边的对象是否包含在数组属性中。

最后,你可以收到一条"消息"访问PFRelation属性时会将您带到提交给某个Discussion对象的Message对象。

查看PFRelations,他们是您的朋友,并且是通过直接查询解决问题的方法。

答案 1 :(得分:0)

嗯......好问题。我已经使用"聪明的查询"完成了它。一对一消息传递的方法,但我认为在群组消息传递的情况下动态创建单独的类可能更有意义,因为为了允许灵活数量的参与者,您需要将它们存储在数组;并且在类中查询包含数组中对象的条目是一项特别耗时的操作。因此,在一个大型消息传递类中查找用户的特定会话可能会花费大量时间。我认为最好使用单独的类,每个对话都有自己的类。