注册

请教:IOS 怎么导入历史聊天记录

用IOS demo举例:APP重装或者换另一个手机登陆之后 历史聊天记录就没有了,是因为聊天记录是保存到本地沙箱数据库中,我现在需要解决的问题是重装APP或者换手机登陆之后能保证聊天记录存在。现在能想到的有两个解决方案?第一种:IOS的SDK提供了从服务器拉取聊天记录数据并自动保存到本地沙箱的方法,但不知SDK是否提供了这种方法。第二种:如果第一个解决方案不能实现那么 我只能从REST API上拉数据,然后手动用代码的方式将数据写到沙箱数据库对应的表中,但是从REST API获取的数据和本地沙箱生产的表结构有不匹配(沙箱数据库中聊天记录表有很多字段,但是从REST API拉的数据只有很少一部分的字段)  请问环信工程师们  我应该怎么处理呢?
已邀请:

lifei9241

赞同来自: play a game

环信SDK内没有从服务器拉取聊天记录的方法。实现的话,你可以调用rest导出聊天记录保存到你们自己的服务器上,卸载app之后,想要显示的话,从你们服务器去获取。如果想存入环信SDK建的数据库中,SDk提供有插入的方法,可以构造得到EMMessage对象,然后调用插入的方法(insertMessageToDB等)。具体方法注释可以看下IChatManagerConversation.h头文件。
非常感谢  已经按你建议的方式 实现了该功能 但是导入的消息 前面有一个感叹号,见附件截图

A1DE0317-3ED5-4847-95A3-DF583608A3DB.png

应该是构造EMMessage对象并插入的时候的问题,代码如下,请问需要怎么调整:
 
EMMessage *message = [[EMMessage alloc] initMessageWithID:@"109583740858008100" sender:@"wanhongbo6" receiver:@"wanhongbo4" bodies:@[body]];
message.timestamp = 1443083360360L;
[[EaseMob sharedInstance].chatManager insertMessageToDB:message append2Chat:NO];
message.deliveryState = eMessageDeliveryState_Delivered;  加上这个  给消息的发送状态赋值。

要回复问题请先登录注册