获取会话
客户端 SDK 会根据收发的消息在本地数据库中生成对应会话。您可以从本地数据库获取 SDK 生成的会话列表。
获取会话列表
通过以下接口分页获取 SDK 在本地数据库生成的会话列表。获取到的会话列表按照时间倒序排列,置顶会话会排在最前。
方法
TypeScript
getConversations(
conversationTypes: Array<RCIMIWConversationType>,
channelId: string,
startTime: number,
count: number,
callback: IRCIMIWGetConversationsCallback
): Promise<number>;
参数说明
参数名 | 参数类型 | 描述 |
---|---|---|
conversationTypes | Array<RCIMIWConversationType> | 会话类型 |
channelId | string | 频道 ID,仅支持超级群使用,其他会话类型传 null 即可 |
startTime | number | 时间戳(毫秒),获取小于此时间戳的会话,传 0 为查询最新数据 |
count | number | 查询的数量, 0 < count ≤ 50 |
callback | IRCIMIWGetConversationsCallback | 接口调用结果回调。 |
返回值
返回值 | 描述 |
---|---|
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>;
参数说明
参数名 | 参数类型 | 描述 |
---|---|---|
type | RCIMIWConversationType | 会话类型 |
targetId | string | 会话 ID |
channelId | string | 频道 ID,仅支持超级群使用,其他会话类型传 null 即可 |
callback | IRCIMIWGetConversationCallback | 接口调用结果回调。 |
返回值
返回值 | 描述 |
---|---|
number | 当次接口操作的状态码。0 代表调用成功 具体结果需要实现接口回调,非 0 代表当前接口调用操作失败,不会触发接口回调,详细错误参考错误码 |
代码示例
TypeScript
const callback = {
onSuccess: (t: RCIMIWConversation) => {
//...
},
onError: (code: number) => {
//...
},
};
let code = await engine.getConversation(type, targetId, channelId, callback);
常见问题
Q1: 当用户卸载重新安装后发现会话列表为空或者部分会话丢失
A1: 由于会话列表是从本地数据库获取的, 是在 SDK 内部数据库存储的,所以当用户在卸载的时候会删除本地数据库,导致重新安装后会话列表为空,而会出现部分会话的原因是因为开启了 离线消息补偿 功能,具体操作是在后台购买 多设备消息同步 功能,这个功能里默认涵盖了今天(当天 0 点)的离线消息补偿,所以当用户在新设备登陆会触发离线消息补偿功能,从而获取到部分会话,造成部分会话丢失的错觉。如果想要更多天的离线消息补偿,可 提交工单 修改,最多支持 7 天,设置时间过长,当单用户消息量超大时,可能会因为补偿消息量过大,造成端上处理压力的问题。