跳到主要内容

获取会话

客户端 SDK 会根据收发的消息在本地数据库中生成对应会话。您可以从本地数据库获取 SDK 生成的会话列表。

获取会话列表

通过以下接口分页获取 SDK 在本地数据库生成的会话列表。获取到的会话列表按照时间倒序排列,置顶会话会排在最前。

方法

loadConversations(types: Array<RCIMIWConversationType>, channelId: string, startTime: number, count: number): Promise<number>;

参数说明

参数类型说明
typesArray<RCIMIWConversationType>选择要获取的会话类型。可设置多个会话类型。
channelIdstring频道 ID,暂不支持该参数。传 null 即可。
startTimenumber指定时间戳,以获取早于这个时间戳的会话列表。首次传 0,表示从最新开始获取;后续使用真实时间戳(即上一页最后一条会话的 sentTime)。
countnumber查询的数量, count 大于 0,小于等于 50。

返回值

返回值描述
Promise<number>当次接口操作状态码,并不代表最终操作结果,状态码详细信息

代码示例

engine.loadConversations(
types,
channelId,
startTime,
count
)
.then((code: number) => {});

回调方法

  • setOnConversationsLoadedListener

获取会话列表的结果回调

setOnConversationsLoadedListener(listener?: (code: number, conversationTypes: Array<RCIMIWConversationType>, channelId: string, startTime: number, count: number, conversations: Array<RCIMIWConversation>) => void): void;

参数说明

参数类型说明
codenumber接口回调的状态码,0 代表成功,非 0 代表出现异常
conversationTypesArray<RCIMIWConversationType>调用接口时传入的会话类型
channelIdstring调用接口时传入的频道 ID
startTimenumber调用接口时传入的时间戳
countnumber调用接口时传入的查询数量
conversationsArray<RCIMIWConversation>获取的会话列表

代码示例

engine.setOnConversationsLoadedListener(
(
code: number,
conversationTypes: Array<RCIMIWConversationType>,
channelId: string,
startTime: number,
count: number,
conversations: Array<RCIMIWConversation>
) => {}
);

获取指定会话

获取某个会话的详细信息。

方法

loadConversation(type: RCIMIWConversationType, targetId: string, channelId: string): Promise<number>;

参数说明

参数类型说明
typeRCIMIWConversationType会话类型
targetIdstring会话 ID
channelIdstring频道 ID,暂不支持该参数。传 null 即可。

返回值

返回值描述
Promise<number>当次接口操作状态码,并不代表最终操作结果,状态码详细信息

代码示例

engine.loadConversation(
type,
targetId,
channelId
)
.then((code: number) => {});

回调方法

  • onConversationLoaded
setOnConversationLoadedListener(listener?: (code: number, type: RCIMIWConversationType, targetId: string, channelId: string, conversation: RCIMIWConversation) => void): void;

参数说明

参数类型说明
codenumber接口回调的状态码,0 代表成功,非 0 代表出现异常
typeRCIMIWConversationType调用接口时传入的会话类型
targetIdstring调用接口时传入的会话 ID
channelIdstring调用接口时传入的频道 ID
conversationRCIMIWConversation获取的会话列表

代码示例

engine.setOnConversationLoadedListener(
(
code: number,
type: RCIMIWConversationType,
targetId: string,
channelId: string,
conversation: RCIMIWConversation
) => {}
);

常见问题

Q1: 当用户卸载重新安装后发现会话列表为空或者部分会话丢失

A1: 由于会话列表是从本地数据库获取的, 是在 SDK 内部数据库存储的,所以当用户在卸载的时候会删除本地数据库,导致重新安装后会话列表为空,而会出现部分会话的原因是因为开启了 离线消息补偿 功能,具体操作是在后台购买 多设备消息同步 功能,这个功能里默认涵盖了今天(当天 0 点)的离线消息补偿,所以当用户在新设备登陆会触发离线消息补偿功能,从而获取到部分会话,造成部分会话丢失的错觉。如果想要更多天的离线消息补偿,可 提交工单 修改,最多支持 7 天,设置时间过长,当单用户消息量超大时,可能会因为补偿消息量过大,造成端上处理压力的问题