跳到主要内容

migrate-message

App 用户在更换设备时,可能需要迁移设备上的消息数据。IMLib SDK 提供了批量导入带 UID 的消息数据,可实现消息跨设备迁移。

提示

不支持聊天室会话类型。不支持超级群会话类型。

准备消息数据

  • App 需要自行导出原设备的消息记录。请注意记录消息的全局唯一消息 ID(UID)字段。
  • App 可以一次导入最多 500 条消息。请注意保证 500 条消息数据记录的正确性。例如,500 条数据内 UID 不能重复。
  • 仅能导入 SDK 可以在本地存储的消息,否则报参数错误异常。详见消息介绍

批量插入消息

在本地数据库批量插入带 UID 的消息。不支持聊天室会话类型。打开 enableCheck 后,SDK 会在插入时检查当前 UID 是否与数据库中 UID 重复,并移除重复项。注意,App 需要始终保证 500 条消息数据内部无重复的 UID。

在本地数据库批量插入消息。由于批量插入失败时数据会使数据整体插入失败,建议分批插入。

/*!
异步批量插入接收的消息(该消息只插入本地数据库,实际不会发送给服务器和对方)

@discussion 此方法不支持聊天室的会话类型。不支持超级群会话类型。每批最多处理 500 条消息,超过 500 条返回 NO
@discussion 消息的未读会累加到会话的未读数上

@remarks 消息操作
*/
- (void)batchInsertMessage:(NSArray<RCMessage *> *)msgs
checkDuplicate:(BOOL)checkDuplicate
completion:(nullable void(^)(BOOL))completion;
参数类型说明
msgsNSArray消息实体 RCMessage 对象列表。单次操作最多插入 500 条消息,建议单次插入 10 条。注意,message 中必须包含正确有效的 sentTime(消息发送的 Unix 时间戳,单位为毫秒),否则无法通过获取历史消息接口从数据库中获取该消息。
checkDuplicateBOOL是否启用消息排重。
completionBlock异步回调,返回是否插入成功
提示

Message 的下列属性会被入库,其余属性会被抛弃:

  • conversationType:会话类型。
  • messageUId:消息全局唯一 ID。
  • targetId:会话 ID。
  • messageDirection:消息方向。
  • senderUserId:发送者 ID。
  • receivedStatus:接收状态;如果消息方向为接收方,并且 receivedStatusReceivedStatus_UNREAD 时,该条消息未读。未读消息数会累加到会话的未读消息数上。
  • sentStatus:发送状态。
  • content:消息的内容。
  • sentTime:消息发送的 Unix 时间戳,单位为毫秒,会影响消息排序。
  • extra:消息附加信息