跳到主要内容

获取会话

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

获取会话列表

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

方法

TypeScript

getConversations(
conversationTypes: Array<RCIMIWConversationType>,
channelId: string,
startTime: number,
count: number,
callback: IRCIMIWGetConversationsCallback
): Promise<number>;

参数说明

参数名参数类型描述
conversationTypesArray<RCIMIWConversationType>会话类型
channelIdstring频道 ID,仅支持超级群使用,其他会话类型传 null 即可
startTimenumber时间戳(毫秒),获取小于此时间戳的会话,传 0 为查询最新数据
countnumber查询的数量, 0 < count ≤ 50
callbackIRCIMIWGetConversationsCallback接口调用结果回调。

返回值

返回值描述
number当次接口操作的状态码。0 代表接口调用成功,具体业务结果需要从接口回调获取,非 0 代表当前接口调用操作失败,不会触发接口回调,详细错误参考错误码

代码示例

TypeScript

const callback = {
onSuccess: (t: Array<RCIMIWConversation>) => {
//...
},
onError: (code: number) => {
//...
},
};
let code = await engine.getConversations(conversationTypes, channelId, startTime, count, callback);

获取指定会话

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

方法

TypeScript

getConversation(
type: RCIMIWConversationType,
targetId: string,
channelId: string,
callback: IRCIMIWGetConversationCallback
): Promise<number>;

参数说明

参数名参数类型描述
typeRCIMIWConversationType会话类型
targetIdstring会话 ID
channelIdstring频道 ID,仅支持超级群使用,其他会话类型传 null 即可
callbackIRCIMIWGetConversationCallback接口调用结果回调。

返回值

返回值描述
number当次接口操作的状态码。0 代表接口调用成功,具体业务结果需要从接口回调获取,非 0 代表当前接口调用操作失败,不会触发接口回调,详细错误参考错误码

代码示例

TypeScript

const callback = {
onSuccess: (t: RCIMIWConversation) => {
//...
},
onError: (code: number) => {
//...
},
};
let code = await engine.getConversation(type, targetId, channelId, callback);

按置顶优先获取会话

分页获取会话列表,并通过 topPriority 指定是否优先返回置顶会话。

方法

TypeScript
getConversationsWithPriority(
conversationTypes: Array<RCIMIWConversationType>,
channelId: string,
startTime: number,
count: number,
topPriority: boolean,
callback?: IRCIMIWGetConversationsCallback
): Promise<number>;

参数说明

参数名参数类型描述
conversationTypesArray<RCIMIWConversationType>会话类型集合
channelIdstring频道 ID,仅支持超级群使用,其他会话类型传 null 即可
startTimenumber时间戳(毫秒),获取小于此时间戳的会话,传 0 查询最新数据
countnumber查询数量,0 < count ≤ 50
topPriorityboolean是否优先返回置顶会话,true 表示优先返回,false 表示不优先返回
callbackIRCIMIWGetConversationsCallback接口调用结果回调

返回值

返回值描述
number当次接口操作的状态码。0 代表接口调用成功,具体结果通过回调获取;非 0 代表调用失败,不会触发回调

代码示例

TypeScript
const callback = {
onSuccess: (conversations: Array<RCIMIWConversation>) => {
//...
},
onError: (code: number) => {
//...
},
};
const code = await engine.getConversationsWithPriority(
conversationTypes,
channelId,
startTime,
count,
true,
callback,
);

从服务器拉取会话列表

从融云服务器拉取远端会话列表并同步到本地。同步完成后,可通过 远端会话列表同步完成监听 获取同步结果。

方法

TypeScript
getRemoteConversationList(callback?: IRCIMIWOperationCallback): Promise<number>;

参数说明

参数名参数类型描述
callbackIRCIMIWOperationCallback接口调用结果回调

返回值

返回值描述
number当次接口操作的状态码。0 代表调用成功,具体结果通过回调获取;非 0 代表调用失败,不会触发回调

代码示例

TypeScript
const code = await engine.getRemoteConversationList({
onSuccess: () => {
// 已完成远端会话列表拉取
},
onError: (errorCode: number) => {
//...
},
});

远端会话列表同步完成

监听 getRemoteConversationList 的同步结果。

方法

TypeScript
setOnRemoteConversationListSyncedListener(listener?: (code: number) => void): void;

参数说明

参数名参数类型描述
codenumber同步结果状态码,0 表示成功,非 0 表示失败

代码示例

TypeScript
engine.setOnRemoteConversationListSyncedListener((code: number) => {
//...
});

常见问题

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

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