【问题标题】:What the best way for storing chat messages and dialogs in IOS在 IOS 中存储聊天消息和对话的最佳方式是什么
【发布时间】:2016-12-14 18:25:45
【问题描述】:

我正在编写一个包含聊天的应用程序。存储消息(有时由图像和对话框组成)的最佳做法是什么?一方面,最好将它们保存在 Core Data 中,但用户可以从服务器获取消息。另一方面,我可以使用缓存,但没有人知道消息应该存储多长时间。我无效地试图了解 vk.com 应用程序如何与此配合使用。 你会怎么处理这个?欢迎提供任何 Objective-C 代码示例。

【问题讨论】:

    标签: ios objective-c


    【解决方案1】:

    我有一个社交应用。我在 Core Data 中将聊天消息与它们所属的聊天室保持联系,因此通过聊天室的托管对象获取一组消息非常容易。如果收到通知,我会在后台更新消息,并且在启动聊天室时,我会 ping 服务器以获取比我最近的消息更新的消息。

    对于图像等媒体,您可以将它们作为二进制数据存储在消息实体中,最大不超过 1MB。之后,您应该将它们存储在目录中,并将 URL 作为属性保留在您的消息实体中。

    核心数据的另一个真正优势是它可以轻松管理您的内存。您可以获取任何早于特定时间的消息/相关媒体,然后将它们全部删除。由于您的服务器是消息的主要存储库,如果用户碰巧再次打开该聊天室,您可以在需要时下载最后一批消息(并将它们再次存储到 Core Data)。但是你的对象的实际访问都是基于 NSPredicate 的,这使得查询非常容易。

    【讨论】:

    • 为什么不在核心数据中使用外部存储选项?
    • @JoeDaniels 好点。只需在属性检查器中检查该选项,让核心数据为您管理更大的数据块。绝对是要走的路。
    【解决方案2】:

    如果您没有网络服务,您可以使用Firebase from GoogleHere 是一个很好的关于云消息传递的示例项目,它还具有发送图像功能。还有免费的Notification 服务也由谷歌提供。示例代码和项目可以在here 找到。它通过Realtime Database 存储消息

    【讨论】:

      猜你喜欢
      • 2012-10-25
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-05-14
      • 2012-01-29
      • 2011-10-27
      • 1970-01-01
      • 2015-12-09
      相关资源
      最近更新 更多