C17 超级群能力收口
C17 是超级群/频道/用户组/私有频道/禁言相关能力的收口项。经过 rev22(会话类型 10)、rev23(频道级消息 channelId)、rev24(private 频道列表可见性 + 各端频道 UI 组件)三轮补齐,Web/Android/Flutter/Electron 四端能力已具备;本页给出能力清单、实现证据、平台状态与剩余边界。
矩阵状态(Lead 汇总)
内部缺口矩阵(含当前版本更新):378 implemented / 129 partial / 59 missing / 11 na / 14 excluded(共 591 行)。
C17-web、C17-android、C17-flutter、C17-electron 已置 implemented;C17-native 仍 missing(C ABI 无频道 op);C17-ios / C17-harmony 保持 partial(reserved,无运行时)。
能力清单与证据
| 能力 | 实现 | 证据/入口 |
|---|---|---|
| 超级群会话类型 | ConversationType.SUPER_GROUP=10;存量 2+super 可读 | IDL rev22;会话类型指南 |
| 频道 CRUD / 加入 / 离开 | 四端 IMLib 8 个频道/用户组语义 op(create/list/join/leave + usergroup create/list/by-user/bind) | IDL rev21;频道操作指南 |
| 用户组与绑定 | 创建/列表/按用户反查/绑定频道(双向索引) | IDL rev21;用户组指南 |
| 频道级消息 | Message.channelId + sendMessage/getHistoryMessages options.channelId;仅频道成员接收、历史可按频道过滤 | IDL rev23;频道级消息 |
| 私有频道消息鉴权 | private 发送需成员(1003)、收件人/离线/回执/撤回按频道收窄 | rev23 服务端;私有频道指南 |
| 私有频道列表可见性 | public 群成员可见;private 仅频道成员/群主/管理员;Open API 运行期可选 userId | rev24 服务端;列表可见性 |
| 频道 UI 组件 | Web ChannelSwitcher;Android ChannelListDialog + ChatFragment 频道栏;Flutter ChannelList/ChannelSwitcher;Electron Demo 复用 Web | rev24 SDK;频道 UI 组件 |
| Demo 接入 | Web/Electron Demo 已接入频道切换器(Electron 复用 Web 组件并支持主题切换) | rev24 demo |
平台状态
| 平台 | 状态 | 说明 |
|---|---|---|
| Web / Android / Flutter / Electron | ✅ implemented | 会话类型 + 频道/用户组 op + 频道消息 + 频道 UI 组件(Electron 复用 Web 组件,无独立 IMKit) |
| Native(C ABI) | ⛔ missing | C ABI 只有 18 个操作,无 channel/usergroup op;无频道 UI。需要频道能力请用 Web/Android/Flutter/Electron SDK 或 Open API |
| iOS / HarmonyOS | 🟡 partial(reserved) | 声明同构、无运行时代码;契约枚举与绑定映射已登记 |
验收清单
- 创建
groupType=super群 → 创建 public/private 频道 → 用listSupergroupChannels确认列表返回(private 仅成员/管理员可见)。 - 以
conversationType=10+options.channelId发送频道消息 → 频道成员收到、非成员收不到;历史带 channelId 可过滤。 - 非成员读取 private 频道历史 → 1003;非成员发送 → 1003;删除频道后发送 → 1005;非 10 类型带 channelId → 1001。
- 用 Web ChannelSwitcher / Android 频道栏 / Flutter ChannelSwitcher 切换频道,确认发送与历史跟随 channelId,切回群级后 channelId 为空。
- 回调消费方按
channelId归档频道消息;无 channelId 计入群级。 - Open API
supergroup.channel.list:不带 userId 只见 public;带 userId 按该用户过滤(非成员 403/1003、用户不存在 1004)。
剩余边界(不在 C17 内或另行排期)
| 项 | 现状 |
|---|---|
| 频道成员管理 UI | 未提供;成员增删用 channel/members/* Server API |
| 频道级未读 / 回执拆分 | 未实现:未读/回执仍按群会话聚合(totalMembers 取频道成员数) |
| 客户端 search / typing 按频道裁剪 | 未实现:Open API 搜索已按可见性过滤;typing 仍群级 |
| 默认频道 / 默认免打扰 | 未实现(不自动创建 RCDefault) |
| Native / iOS / HarmonyOS 运行时 | 无频道运行时(native C ABI 未扩展;iOS/Harmony reserved) |
| IMKit 契约面 | 频道 UI 组件是 SDK 运行时组件,未写入 sdk-imkit.json;契约文档仍以 10 个契约组件为准 |