获取远端会话
提示
会话列表支持超级群
自 5.20.0 版本开始,SDK 支持在获取会话列表中返回超级群会话信息,以便于开发者根据业务需求对单聊、群聊、超级群会话列表进行混合排序展示;该功能需提交工单开启。
功能开启后,SDK 在连接成功后,从服务器拉取所有会话数据至本 地内存中进行维护,并在开发者调用接口时,从内存中按查询条件返回相关会话数据。
注意
- 单聊、群聊会话同步完成后,SDK 将通知
Events.CONVERSATIONS_SYNCED事件; 超级群会话同步完成后,SDK 将通知Events.ULTRA_GROUP_ENABLE事件;建议在接收到以上两个事件后再拉取获取会话列表进行渲染,否则数据结果可能存在丢失、排序异常等问题。 - Electron 平台自 5.28.0 版本开始支持超级群业务。
- 会话列表结果中仅包含超级群的默认频道会话数据,不包含子频道会话。
分页获取会话列表
SDK 从 5.32.0 版本开始新增 createConversationListLoader 接口,用于在未来逐步统一和归拢所有的会话列表获取接口,以简化开发者集成流程。该接口在调用成功时,返回一个 ConversationListLoader 实例,通过调用该实例的 load() 方法分页加载会话列表数据。
警告
目前该接口暂不支持 Electron 平台。
接口
JavaScript
RongIMLib.createConversationListLoader(options)
参数说明
| 参数 | 类型 | 必填 | 说明 |
|---|---|---|---|
options | IConversationListLoaderOptions | 是 | 查询条件参数 |
示例代码
JavaScript
// ...
// 定义查询条件
const options = {
conversationTypes: [ConversationType.PRIVATE, ConversationType.GROUP],
// 标签过滤器,可选参数;不传则不进行标签过滤
tagFilter: {
tagIds: [],
topPriority: false, // 是否按标签内置顶优先返回,仅当 tagIds 列表有值时有效
},
// 查询顺序
// 0 为降序(默认),从最新会话开始查询
// 1 为升序,从最早的会话开始查询
order: 0,
};
const { isOk, code, data: loader } = await RongIMLib.createConversationListLoader(options);
if (!isOk) {
console.log('创建 Loader 实例失败', code);
return;
}
// 开发者需要持续持有 loader 引用,以便在需要时加载更多会话
// 指定加载数量,有效值 [1, 100]
const res = await loader.load(10);
if (res.isOk) {
console.log('会话列表获取成功:', res.data);
} else {
console.log('会话列表获取失败:', res.code);
}
// ...
获取会话列表
SDK 从 5.28.0 版本开始新增 getConversationListByTimestamp 接口,用于替换原 getConversationList 接口,以解决原接口的二义性问题。
原 getConversationList 接口二义性问题说明:
- 非 Electron 平台:
channelId参数无效,始终按时间戳获取会话列表。 - Electron 平台:
- 当
channelId为字符串时,其行为与非 Electron 平台保持一致,按时间戳返回数据。 - 当
channelId为undefined时,该接口返回本地数据库存储的全量数据。
- 当
参数说明
| 参数 | 类型 | 必填 | 说明 |
|---|---|---|---|
params | IGetConversationListByTimestampParams | 是 | 查询参数 |
IGetConversationListByTimestampParams 结构属性说明
| 属性 | 类型 | 必填 | 说明 |
|---|---|---|---|
startTime | number | 是 | 获取会话的起始时间,需要精确到毫秒,0 表示当前时间 |
count | number | 是 | 获取数量 |
order | number | 否 | 查询方向,同时影响结果排序,该参数对 Electron 平台无效 0 - 从 startTime 开始向前查询,数据按时间降序排序 1 - 从 startTime 开始向后查询,数据按时间升序排序 |
topPriority | boolean | 否 | 是否将置顶会话排序优先 |
conversationTypes | Array<ConversationType> | 否 | 会话类型,值为空或长度为 0 时,获取全部会话类型。该参数仅 Electron 平台有效 |
示例代码
JavaScript
const params = {
startTime: 0,
count: 10,
};
RongIMLib
.getConversationListByTimestamp(params)
.then(res => {
if (res.isOk) {
console.log('获取成功:', res.data);
} else {
console.log('获取失败:', res.code);
}
});