2016-12-14 182 views
-1

我在写一个包含聊天的应用程序。存储消息的最佳做法是什么,有时由图像和对话框组成?一方面将它们保存在核心数据中会更好,但用户可以从服务器获取消息。另一方面,我可以使用缓存,但没人知道应该存储多长时间的消息。我无意尝试了解vk.com应用程序如何处理这个问题。 你会如何处理? Objective-C代码的任何样本都是受欢迎的。在IOS中存储聊天消息和对话的最佳方式

回答

3

我有一个社交应用程序。我将核心数据中的聊天消息与他们所属的聊天室保持关系,因此通过聊天室的管理对象获取一组消息非常简单。如果有通知进入,我会在后台更新消息,在聊天室启动时,我会ping服务器以获取比我最近的消息更新的消息。

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

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

+0

为什么不在核心数据中使用外部存储选项? –

+0

@JoeDaniels好点。只需在属性检查器中检查该选项,让我们的核心数据为您管理更大的数据块。绝对要走的路。 –

0

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

相关问题