如何实现聊天记录的备份与恢复。

聊天数据分成两部分,一部分是媒体资源,这部分发送成功后都保存在云服务器上,本地也会保存一份,迁移时可以不迁移这部分,确保对象存储服务器不删除文件即可。另外一部分是消息,需要把消息全部迁移。 除了消息之外的信息不用迁移,可以用IM服务同步下来。

数据库是使用sqlcipher进行加密的,而且跟当前机器绑定,直接copy数据库过去是不可以的,因此只能通过“读取消息保存成文件”,“传输文件到目的设备”,“写入消息”的办法复现。

  1. 读取消息保存成文件。client提供获取会话列表的方法,先获取到会话列表,然后依次对会话读取消息,对每个会话调用读取消息的接口每次读取一批消息,然后把消息的转化为data格式保存到文件中。
  2. 通过某种方式把文件copy到目标机器上。
  3. 把文件的数据读取出来,转成消息,然后调用插入消息接口把消息插入。

1/3步骤中每一步在client中都有对应的接口,找一下就OK了。另外消息《=》数据的转化需要自己实现,一个简单的办法是使用json,把消息的每个字段和json字段对应起来,其中content转化为payload进行序列化。

插入消息时只能一条一条插入,client提供了开启事务/提交事务的接口,可以大幅度提高速度,在插入之前开启事务,在插入完成后提交事务。

2018 © wildfirechat.net 京ICP备18060403号-1 all right reserved,powered by Gitbook该文件修订时间: 2022-08-29 09:42:41

results matching ""

    No results matching ""