获取频道列表
更新时间:2023-10-30
PDF
App 可按需使用客户端 SDK 与融云服务端 API 提供的能力,采取灵活的方式维护超级群的频道列表。
- 如果您的应用/环境在 2022.10.13 日及以后开通超级群服务,超级群业务中会包含一个 ID 为
RCDefault
的默认频道。如果发消息时不指定频道 ID,则该消息会发送到RCDefault
频道中。在获取RCDefault
频道的历史消息时,需要传入该频道 ID。 - 如果您的应用/环境在 2022.10.13 日前已开通超级群服务,在发送消息时如果不指定频道 ID,则该消息不属于任何频道。获取历史消息时,如果不传入频道 ID,可获取不属于任何频道的消息。融云支持客户调整服务至最新行为。该行为调整将影响客户端、服务端收发消息、获取会话、清除历史消息、禁言等多个功能。如有需要,请提交工单咨询详细方案。
如何获取超级群全部频道列表
超级群下全部频道的列表可通过融云服务端 API (/ultragroup/channel/get.json
) 获取。
注意,对单个用户来说,最多可以加入 100 个超级群,在每个超级群中最多可以加入或者创建 50 个频道。
客户端 SDK 会通过频道中收发的消息在本地数据库中生成一个超级群频道列表。该列表仅包含了已在本地产生消息的频道,可能并非该超级群下全部频道的列表。
建议从 App 业务服务端维护超级群的频道列表。App 业务一般需要知晓当前用户的所加入的超级群,以及超级群下的频道列表,才能实现特定的业务功能。假设同一超级群下的不同用户需要展示个性化的频道列表(例如 App 需要在 UI 上展示用户标星的特定频道),则需要为用户保存超级群频道列表。
APP 服务端也可以按照需求将超级群分组(如超级群概述中的 UI 框架设计所示)。
获取本地指定超级群下的频道列表
客户端 SDK 会根据频道中收发的消息在本地数据库中生成对应频道的会话。您可以从本地数据库获取 SDK 生成的频道列表。获取到的频道列表按照时间倒序排列。
方法
Future<int> getConversationsForAllChannel(RCIMIWConversationType type, String targetId, {IRCIMIWGetConversationsForAllChannelCallback? callback});
已复制
1
参数说明
参数名 | 参数类型 | 描述 |
---|---|---|
type | RCIMIWConversationType | 会话类型 |
targetId | String | 会话 ID |
callback | IRCIMIWGetConversationsForAllChannelCallback | 事件回调。SDK 从 5.3.1 版本开始支持 callback 方式回调。从 5.4.0 版本废弃该接口的其他回调方式。如果传入了 callback 参数,仅触发 callback 回调。 |
返回值
返回值 | 描述 |
---|---|
Future<int> | 当次接口操作的状态码。0 代表调用成功 具体结果需要实现接口回调,非 0 代表当前接口调用操作失败,不会触发接口回调,详细错误参考错误码 |
代码示例
IRCIMIWGetConversationsForAllChannelCallback? callback = IRCIMIWGetConversationsForAllChannelCallback(onSuccess: (List<RCIMIWConversation>? t) {
//...
}, onError: (int? code) {
//...
});
int? ret = await engine?.getConversationsForAllChannel(type, targetId, callback:callback);
已复制
1
2
3
4
5
6
7
回调方法
- onConversationsLoadedForAllChannel
Function(int? code, RCIMIWConversationType? type, String? targetId, List<RCIMIWConversation>? conversations)? onConversationsLoadedForAllChannel;
已复制
1
参数说明
参数名 | 参数类型 | 描述 |
---|---|---|
code | int | 接口回调的状态码,0 代表成功,非 0 代表出现异常 |
type | RCIMIWConversationType | 会话类型 |
targetId | String | 会话 ID |
conversations | List<RCIMIWConversation> | 获取到的会话集合 |
代码示例
engine?.onConversationsLoadedForAllChannel = (int? code, RCIMIWConversationType? type, String? targetId, List<RCIMIWConversation>? conversations) {
//...
};
已复制
1
2
3