iOS IMKit 更新日志
本页由 changelog.md 与 sdk-imkit 契约自动生成:记录 IDL 冻结修订、IMKit 组件清单与平台绑定里程碑。
| 项 | 值 |
|---|---|
| IDL 版本 | 1.0.0 |
| 状态 | frozen |
| 冻结修订 | 35 |
| 冻结时间 | 2026-10-30T01:15:00.000Z |
| IMKit 组件数 | 10 |
| 本平台门面 | IMKitFacade |
| 本平台绑定状态 | ga |
IMKit 组件清单(当前版本)
| 组件 | 职责 | Props | Events |
|---|---|---|---|
ConversationListView | 会话列表 | 4 | 3 |
ChatView | 会话详情(消息流 + 输入区) | 8 | 12 |
MessageBubble | 消息气泡(按内容类型渲染) | 9 | 8 |
MessageInput | 输入区 | 5 | 7 |
Avatar | 头像 | 4 | 0 |
UnreadBadge | 未读/提及角标 | 3 | 0 |
TimeSeparator | 时间分隔/格式化 | 2 | 0 |
MessageStatusIndicator | 发送状态 | 3 | 0 |
Theme | 主题令牌 | 2 | 0 |
IMKitFacade | 组件门面/挂载入口 | 1 | 2 |
绑定里程碑
- 当前 IMKit 绑定模块:
Sources/ImpIaaSIM/IMKit;UI 框架:—。 - 只依赖 IMLib 公开协议与模型;不得 import 传输层/存储实现(sdk-imkit.json dependencyRule)
- 已实现并验证:Swift + Objective-C 双接口,Xcode/iOS 模拟器真实构建运行,端到端连接 ni-paas-im 服务端。
修订历史(含 IMKit 相关变更)
v1.0.0 冻结修订 25 — 2026-10-28T19:55:00+08:00
- sdk-bindings.json(元数据,非语义;不改变冻结修订号):
bindings.ios.status由规划期升级为ga(Swift + Objective-C 双接口真实实现,Xcode/iOS 模拟器构建与运行验证);新增bindings.macos(inherits: electron,macOS x64/arm64 桌面端分发,.app/.dmg + 签名/公证)。 - protocol.json(additive):WS query 可选
deviceId(≤128);hello 回显deviceId?;多设备独立 deliveredSeq/离线补收,缺省兼容单设备游标。 - 无新增路由/帧/错误码/回调;计数保持 398/34/43/22。
v1.0.0 冻结修订 23 — 2026-10-28T14:15:00+08:00
- domain.json(additive):
Message.channelId?:string,超级群频道消息按频道路由/过滤;为空表示群级消息。 - protocol.json:
superGroupSemantics.channelRouting明确频道路由/成员/历史过滤语义。 - sdk-imlib.json:
sendMessage.options.channelId?、getHistoryMessages.options.channelId?(各端同步)。 - 兼容性:additive-only;无接口删除/改名;路由/WS 帧/错误码/回调数量不变(398/34/43/22)。
v1.0.0 冻结修订 22 — 2026-10-28T12:50:00+08:00
- domain.json(additive):
ConversationType.SUPER_GROUP=10,与融云 ConversationType 数值一致;conversationTypeMapping更新。存量GROUP(2)+groupType=super仍可读,新消息/会话使用 10。 - protocol.json:
superGroupSemantics.representation更新为conversationType=SUPER_GROUP(10),保留存量兼容说明。 - 实现面:服务端把 10 按群语义处理(成员/历史/未读/回执/搜索/回调),四端 SDK 常量补齐;文档中心与矩阵同步。
- 兼容性:additive-only;无接口删除/改名,无路由/WS 帧/错误码/回调数量变化(398/34/43/22)。 # IDL Changelog
v1.0.0 冻结修订 35 — 2026-10-30T18:05:00+08:00 涉及 IMKit
sdk-bindings.json → bindings.flutter.imlib(元数据/签名面,非语义;不改 op/路由/帧/错误码/回调): Flutter 公开对象已由RongIMClient切换为RCIMIWEngine(T3 生命周期迁移 + T9 基线全量公开面), 同步修正绑定签名面,消除文档生成器按旧签名渲染导致的docs.coverage.sdk漂移:class:RongIMClient→RCIMIWEngine;factory:RongIMClient.init(options)→RCIMIWEngine.create(appKey, options)(单次初始化语义);eventsApi改为engine.events.listen(...)。methodMap(103 个 IMLib 语义 op)按sdk/flutter/imlib/lib/src/rcimiw_engine*.dart实际公开签名重写:init→RCIMIWEngine.create(String appKey, RCIMIWEngineOptions options);connect→connect(String token, int timeout, {RCIMIWConnectCallback? callback})(带超时);disconnect→disconnect(bool receivePush);其余 op 沿用引擎上的同名公开方法(参数名/类型/可选性 与 Dart 源码一致,共 64 条签名更新)。- IMKit 组件面不变(
bindings.flutter.imkit.exports11 项维持冻结值)。 - 兼容性:无 op 增删、无路由/WS 帧/错误码/回调事件变化(398/34/43/22 保持);仅 Flutter 绑定签名面 与
compatibility.policy的 additive 约束一致(改名属于文档/绑定面收敛,语义 op 名不变)。 - 其它平台 methodMap 复核:web/electron/android/ios/harmony/macos/native 无
RongIMClient残留(0 处)。 manifest.json:freezeRevision=35,重算sdk-bindings.jsonsha256;其余文件哈希不变。
v1.0.0 冻结修订 34 — 2026-10-30T09:15:00+08:00
errors.json(schema 规范化,码表集合不变 43 条):1031–1035五条历史遗留条目从{code,name,http,desc}统一为与其余 38 条一致的{code,name,httpStatus,category,retryable,since,messageZh,messageEn}:1031 TAG_LIMIT_EXCEEDED→ 400;1032 TAG_NOT_FOUND→ 404;1033 TAG_CONVERSATION_LIMIT_EXCEEDED→ 400;1034 CONVERSATION_NOT_FOUND→ 404(rev16会话标签引入,since=1.1.0);1035 MESSAGE_REJECTED_BY_CALLBACK→ 403(rev32CB01 发送前同步回调message.publish.before返回action=block或syncDefaultAction=block时返回;since=1.1.0)。- 无 op / 路由 / 帧 / 回调事件变化;无名称变更、无码值变更(纯字段结构收敛,additive-compatible)。
manifest.json:freezeRevision=34,重算errors.jsonsha256;其余文件哈希不变。
v1.0.0 冻结修订 33 — 2026-10-30T08:10:00+08:00
- sdk-bindings.json(additive):新增顶层
canonical块(schema=impaas.sdk.bindings.canonical,since=1.8.0,idlRevision=33): canonical.imlib.<op>.canonicalParams[]({name,type,required})+canonicalReturn:平台无关的参数/返回类型口径,覆盖全部 103 个 IMLib 语义 op。- 规则:内联对象类型统一为去平台前缀的具名类型——发送类 options 统一
SendOptions(sendMessage/sendTextMessage/sendImageMessage/sendFileMessage/sendVoiceMessage/sendLocationMessage)、分页统一PageOptions、历史统一HistoryOptions、已读详情ReadDetailQuery、建群CreateGroupOptions、流式StartStreamMessageOptions等;content 槽位统一ImageContent/FileContent/VoiceContent/LocationContent。 normalization:比对前归一规则(去 ObjCIMP/产品IM前缀、去RcResult<>/Promise<>等结果信封;回调/结果/原始类型不参与类型名比对)。- **既有
bindings.*.imlib.methodMap一个字都没改**(不删除、不改写已交付表面);canonical是新增的对照基准,供文档/SDK/审计消费。 - 无 SDK 语义 op / WS 帧 / 错误码 / 回调事件 / 路由变化(IMLib op 103、路由 404 不变)。
- 兼容性:additive-only;不读
canonical的旧调用方行为不变。
v1.0.0 冻结修订 32 — 2026-10-30T02:58:00+08:00
- protocol.json(additive):
clientRest80 → 85(+5),补声明 5 条「Router 已注册、契约未声明」的客户端 REST(A13 对账项;POST/GET同路径的/users按 method 各计 1 条): POST /api/apps/{appkey}/users(注册用户,since 1.8.0;Bearer / Open API HMAC / 匿名仅IM_ALLOW_ANON_WRITE=true)GET /api/apps/{appkey}/users(应用内用户列表,since 1.8.0;当前仅校验 appkey)GET /api/apps/{appkey}/users/{userId}(单个用户资料,since 1.8.0;当前仅校验 appkey)POST /api/apps/{appkey}/groups/{groupId}/join(加入 open 策略群,since 1.8.0;Bearer)GET /api/apps/{appkey}/stats(应用级运营计数,since 1.8.0;走写入口身份校验)- 实现零改动:这 5 条路由早于契约存在(业务已在用),本修订只补契约声明与自省镜像,请求/响应形状与鉴权行为均不变。
- 诚实记录(未做):
GET /users、GET /users/{userId}两个读入口当前不校验 Bearer(仅check_app),属 A02 遗留读入口缺口,已在 IDLauth字段与desc中显式标注;收紧鉴权需另起实现修订,届时不改响应形状(additive 兼容)。 - 无 SDK 语义 op / WS 帧 / 错误码 / 回调事件变化;无删除/改名/改语义。
- 兼容性:additive-only;旧客户端与旧调用方行为不变。
v1.0.0 冻结修订 31 — 2026-10-30T01:20:00+08:00
- sdk-imlib.json(additive):新增 IMLib 语义 op
getMessageReadDetail(group=message,since=1.7.0,transport=rest,errors=[1001,1003,1004]),参数messageId+options{offset?,limit?,filter?},返回{messageId, readCount, unreadCount, totalMembers, filter, offset, limit, total, hasMore, items[]};语义 op 102 → 103。 - domain.json(additive):
ReadReceipt增加可选字段readAt(int64,具体读取时刻)与unreadCounts(map<string,uint32>,按消息的未读人数);新增 schemaMessageReadDetailItem({userId,name,read,readAt?})。既有字段/语义不变。 - sdk-bindings.json(additive):web / flutter / android / electron / ios / harmony 六个平台
imlib.methodMap各新增 1 项(102 → 103);native 保持 curated 17 项不变。 - SDK 实现面:Web(
sdk/web/rongim.mjs实例方法 + 模块函数 +rongim.d.ts类型)、Electron(main imlib/service + preload 白名单 + ipc 校验 +types/index.d.ts)、Android(IMClient/ImClientCore/ClientRest/Models+ReadDetailOptions)、Flutter(RongIMClient.getMessageReadDetail+ReadDetailResult/ReadDetailItem)、iOS(Swift protocol/core/MainQueue + ObjCIMPOSClient桥 + api-surface/objc-surface)、HarmonyOS(仅声明,仍 规划期)。 - 修复:Web SDK 模块级
getMessageReadUsers(messageId, options)包装层此前丢弃options(分页参数不生效),本修订一并修复。 - 无新增 WS 帧 / 错误码 / 回调事件 / 服务端路由;运行时 freezeRevision 前进到 31(路由总数保持 399)。
- 兼容性:additive-only;未调用新 op 的旧客户端行为不变。
v1.0.0 冻结修订 30 — 2026-10-30T00:00:00+08:00
- protocol.json(additive):
clientRest新增 1 条GET /api/apps/{appkey}/messages/{messageId}/read-detail(已读详情:已读/未读名单 + 具体读取时间,支持 offset/limit/filter=all|read|unread)。clientRest 79 → 80,运行时路由 398 → 399。 - protocol.json(additive):
read_receipt帧新增可选字段readAt(读取时刻)、unreadCounts(按消息的未读人数);read_receipt_ack同步回显。 - 服务端实现:新增会话级已读游标
conv_read与逐条读取时间receipt_times,随快照/journal 持久化;PG 模式新增conv_read/receipt_times两表(永久漫游)。 - 无 IMLib op / WS 帧 / 错误码 / 回调事件数量变化;运行时 freezeRevision 前进到 30。
- 兼容性:additive-only;旧客户端不读新字段即行为不变。
v1.0.0 冻结修订 29 — 2026-10-29T23:55:00+08:00 涉及 IMKit
- sdk-imkit.json(additive):features 增加
MessageRendererRegistry(文件/语音/视频/位置/名片/自定义/合并转发渲染)、EmojiPanel(表情/贴纸)、QuickReplyView(快捷回复)、LocalNotificationCenter(本地通知)。 - sdk-bindings.json(additive):对应 Swift + Objective-C 映射。
- 无 IMLib op/路由/WS 帧/错误码变化;运行时 freezeRevision 前进到 29。
v1.0.0 冻结修订 28 — 2026-10-29T19:20:00+08:00 涉及 IMKit
- sdk-imkit.json(additive):features 增加
GroupManagementController(群管理:成员/加人/移除/禁言/管理员/转让/改名/公告/退群)与ContactListController(好友/申请/备注/删除/黑名单)。 - sdk-bindings.json(additive):
bindings.ios.imkit.features增加 Swift + Objective-C 映射。 - 无 IMLib op/路由/WS 帧/错误码变化;运行时 freezeRevision 前进到 28。
v1.0.0 冻结修订 27 — 2026-10-29T15:30:00+08:00 涉及 IMKit
- sdk-imkit.json(additive):新增
features(6 组件:UserInfoProvider / GroupInfoProvider / GroupMemberProvider / MessageMultiSelectController / MessageForwardController / QuoteBar),对标融云 IMKit 信息托管、多选、转发、引用。 - sdk-bindings.json(additive):
bindings.ios.imkit.featuresSwift + Objective-C 映射。 - 无 IMLib op/路由/WS 帧/错误码变化;运行时 freezeRevision 前进到 27。
v1.0.0 冻结修订 26 — 2026-10-29T03:40:00+08:00 涉及 IMKit
- sdk-imkit.json(additive):新增
globalUIKit(新一代 MVVM UI 体系,12 个组件:ChatListViewController/ChatViewController/ChatListViewModel/ChatViewModel/ChatListDataSource/ChatListDelegate/ChatDataSource/ChatDelegate/ChatCellModel/ChatInputController/ChatRouter/ChatUITheme),对标融云 iOS Global IM UIKit;IMKit 10 组件与既有语义不变。 - sdk-bindings.json(additive):
bindings.ios.uikit增加 Swift + Objective-C 双接口映射(12 组件)。 - 无路由/WS 帧/错误码/回调变化;服务端运行时契约身份随 manifest 前进到 26。
v1.1.0 冻结修订 21 — 2026-10-27T00:56:09.462Z
protocol.json:clientRest 79 条(+8:超级群频道 POST/GET、频道 join/leave/绑定用户组、 用户组 POST/GET、按用户查询;since 1.5.0,Bearer);serverToClient 保持 24 帧(本修订无新帧)。sdk-imlib.json:语义 op 102(+11,since 1.5.0):registerPushToken/unregisterPushToken/getPushTokens+createSupergroupChannel/listSupergroupChannels/joinSupergroupChannel/leaveSupergroupChannel/bindUserGroupToChannel/createUserGroup/listUserGroups/getUserGroupsByUser。domain.json:新增ChannelType = ["public","private"]枚举与SupergroupChannel/UserGroup/PushTokenschema;Conversation增加可选groupType: "normal"|"super"(additive,不改 conversationType)。- 服务端缺陷修复:
supergroup/channel/usergroup/bind现在双向写channel.userGroupIds与userGroup.channelIds(幂等),unbind双向移除,反查由空变为可用。 sdk-bindings.json:web/electron/android/flutter/ios/harmony methodMap 各 102(native 仍 curated 17)。admin-api.json/openapi.json/callbacks.json/errors.json:本修订无变更(管理 API 85、 Open API 230、回调 22、错误码 43)。manifest.json:重新冻结全部文件 sha256 与 freezeRevision=21(上一修订 20);兼容策略 additive-only。
v1.1.0 冻结修订 20 — 2026-10-26T23:27:40.437Z
protocol.json:serverToClient 24 帧(+1:presence_changed,{userId,online,lastSeenAt,timestamp, reason},好友默认 ∪ 显式订阅者,去重且排除自己);clientRest 71 条(+5:presence 订阅 POST/GET 2 条、 推送 token 注册/列表/注销 3 条)。sdk-imlib.json:语义 op 91(+3:subscribePresence/unsubscribePresence/getPresenceSubscriptionssince 1.4.0);事件 16(+1:PRESENCE_CHANGED);createGroup参数扩展 joinPolicy/maxMembers。domain.json:新增枚举JoinPolicy = ["open","approval","invite"]。admin-api.json:管理 API 85(+6:推送 token 台账 list/revoke、投递 create/list/get/retry);push/stats扩展 tokenCounts/deliveryCounts/adapters。sdk-bindings.json:web/electron/android/flutter/ios/harmony methodMap 各 91(native 仍 curated 17)。openapi.json/callbacks.json/errors.json:本修订无变更(Open API 230、回调 22、 错误码 43);推送 token/投递复用 1001/1002/1003/1004/1016。manifest.json:重新冻结全部文件 sha256 与 freezeRevision=20(上一修订 19);兼容策略 additive-only。
v1.1.0 冻结修订 19 — 2026-10-26T21:08:20.904Z
domain.json:消息内容类型新增combine(合并转发),含CombineItem/CombineContentschema; 校验 title ≤64、items 1..=100、senderId/contentType 非空、senderName ≤64、Σtext ≤16KB(违规 1001)。protocol.json:clientRest 66 条(+1:GET /api/apps/{appkey}/messages/{messageId}/expansion消息扩展读取,仅会话参与者);limits 新增 combineTitleChars / combineItemsMax / combineTextBytes。sdk-imlib.json:语义 op 88(+2:getMessageExpansionREST、combineMessages本地构建)+ 常量CONTENT_TYPE_COMBINE="combine"(since 1.3.0)。sdk-bindings.json:web/electron/android/flutter/ios/harmony methodMap 各 88(native 仍 curated 17)。admin-api.json/openapi.json/callbacks.json/errors.json:本修订无变更(管理 API 79、 Open API 230、回调 22、错误码 43)。manifest.json:重新冻结全部文件 sha256 与 freezeRevision=19(上一修订 18);兼容策略 additive-only。
v1.1.0 冻结修订 18 — 2026-10-26T19:43:49.742Z
admin-api.json:管理 API 79 个(rev17 为 54,+25),覆盖控制台 K09 群组详情/成员治理(8)、 K10 封禁与注销视图(2)、K13 测试用户与配额(3)、K14 统计维度(1)、K21 推送通道 + K22 推送统计(4)、 K24 翻译/机器人配置(6)、K29 嵌入令牌(1);schemas 扩充到 49。openapi.json/protocol.json/callbacks.json/errors.json/sdk-imlib.json/sdk-bindings.json: 本修订无变更(Open API 230、回调 22、错误码 43、IMLib 86、帧 33、客户端 REST 65)。- 新增运行时路由
/embed与/api/embed/session(控制台嵌入视图,公开但需一次性令牌;不属于 Open API 计数)。 manifest.json:重新冻结全部文件 sha256 与 freezeRevision=18(上一修订 17);兼容策略 additive-only。
v1.1.0 冻结修订 17 — 2026-10-26T17:45:05.008Z
sdk-imlib.json:新增 4 个流式消息语义 op(82 → 86):startStreamMessage / appendStreamMessage / completeStreamMessage / getStreamMessage。protocol.json:clientRest 65 条(+4 流式消息客户端端点);serverToClient 23 帧 (+1stream_changed增量帧);clientToServer 保持 10。callbacks.json:新增 同步回调事件message.publish.before(事件数 22), 应用服务器在消息投递前返回 pass/replace/block(超时按 syncDefaultAction 降级)。errors.json:错误码 43 个(+1:1035 MESSAGE_REJECTED_BY_CALLBACK)。- 回调配置扩展(additive,不破坏旧配置):
syncEnabled/syncTimeoutMs(100–2000,默认 500)/syncDefaultAction(pass|block,默认 pass)。 sdk-bindings.json:web/electron/android/flutter/ios/harmony methodMap 各 86(native 仍为 curated 17)。manifest.json:重新冻结全部文件 sha256 与 freezeRevision=17(上一修订 16);兼容策略 additive-only。
v1.1.0 冻结修订 16 — 2026-10-26T16:12:51.210Z
openapi.json:新增 1 个服务端 Open API 端点(229 → 230):会话标签 创建/更新/删除/查询、标签会话批量增删与分页、会话所属标签、标签未读汇总、标签内置顶、删除会话。sdk-imlib.json:新增 13 个语义 op(69 → 82):createConversationTag / updateConversationTag / deleteConversationTag / getConversationTags / addConversationsToTag / removeConversationsFromTag / getConversationsFromTagByPage / getTagsFromConversation / getUnreadCountByTag / setConversationToTopInTag / deleteConversation / getConversationTypeNotification / setConversationTypeNotification。protocol.json:clientRest 61 条(+13 客户端 REST);帧总数保持 32。errors.json:错误码 42 个(+4:1031 TAG_LIMIT_EXCEEDED / 1032 TAG_NOT_FOUND / 1033 TAG_CONVERSATION_LIMIT_EXCEEDED / 1034 CONVERSATION_NOT_FOUND)。sdk-bindings.json:7 平台 methodMap 同步(web/electron/android/flutter/ios/harmony 各 82, native 仍为 curated 17 子集)。manifest.json:重新冻结全部文件 sha256 与 freezeRevision=16(上一修订 16);兼容策略 additive-only。
v1.1.0 冻结修订 16 — 2026-10-26T16:11:59.437Z
openapi.json:新增 1 个服务端 Open API 端点(229 → 230):会话标签 创建/更新/删除/查询、标签会话批量增删与分页、会话所属标签、标签未读汇总、标签内置顶、删除会话。sdk-imlib.json:新增 13 个语义 op(69 → 82):createConversationTag / updateConversationTag / deleteConversationTag / getConversationTags / addConversationsToTag / removeConversationsFromTag / getConversationsFromTagByPage / getTagsFromConversation / getUnreadCountByTag / setConversationToTopInTag / deleteConversation / getConversationTypeNotification / setConversationTypeNotification。protocol.json:clientRest 61 条(+13 客户端 REST);帧总数保持 32。errors.json:错误码 42 个(+4:1031 TAG_LIMIT_EXCEEDED / 1032 TAG_NOT_FOUND / 1033 TAG_CONVERSATION_LIMIT_EXCEEDED / 1034 CONVERSATION_NOT_FOUND)。sdk-bindings.json:7 平台 methodMap 同步(web/electron/android/flutter/ios/harmony 各 82, native 仍为 curated 17 子集)。manifest.json:重新冻结全部文件 sha256 与 freezeRevision=16(上一修订 15);兼容策略 additive-only。
v1.1.0 冻结修订 15 — 2026-10-26T15:13:21.922Z
openapi.json:新增 16 个服务端 Open API 端点(203 → 219):超级群治理 (默认免打扰、全体禁言、禁言白名单、成员禁言、成员存在性)、按会话类型设置/查询免打扰、 机器人回调渠道配置(v3 bot integration create/update/delete,含 HMAC 投递语义)。admin-api.json:新增 11 个管理 API(43 → 54):应用删除/恢复、 子账号与角色(owner/admin/operator/viewer)、内容审核任务(列表/裁决)、告警规则与事件。callbacks.json/domain.json:回调事件 21 个(如新增 message.audit_result 审核结果回推); WebSocket 帧 32 个(c2s 10 + s2c 22)。manifest.json:重新冻结全部文件 sha256 与 freezeRevision=15(上一修订 san 14);兼容策略仍为 additive-only。
v1.1.0 冻结修订 14 — 2026-10-26T13:47:18.274Z 涉及 IMKit
openapi.json:新增 13 个服务端 Open API 端点(190 → 203,additive):敏感词增量增删/批量、 状态消息(单聊/群聊)、消息审计日志查询与删除、聊天室 KV 批量设置/删除、用户已加入群组分页、 群组同步(应用侧幂等 upsert)、会话属性查询。admin-api.json:新增 6 个管理 API(35 → 43):聊天室销毁/全体禁言、操作日志、功能配置读取/写入、 接口调频读取/写入、推送测试(控制台 K11/K12/K15/K20/K23 模块)。sdk-imkit.json:MessageBubble 新增消息回应/扩展渲染 props 与事件(reactions、expansion、onReactionClick、onReactionLongPress、reaction_click、reaction_longpress),组件总数保持 10。manifest.json:重新冻结全部文件 sha256 与 freezeRevision=14;兼容策略仍为 additive-only。
v1.1.0 冻结修订 13 — 2026-10-26T12:35:25.417Z
openapi.json:新增 15 个服务端 Open API 端点(175 → 190,additive),覆盖 聊天室治理(封禁列表 / 保活查询+移除 / 成员存在性单查+批量 / 禁言列表 / 全局禁言增删查 / 消息类型白名单增删查)、群成员禁言列表、用户所在群组分页查询、全体聊天室广播; 语义基线为融云 platform-chat-api 对应页面,仅对齐行为与字段,代码独立实现。callbacks.json+domain.json.CallbackEventType:回调事件 12 → 20, 新增user.online_status_changed、user.deactivated、user.reactivated、user.profile_changed、friend.changed、chatroom.kv_changed、message.modified、message.deleted(signature/envelope 不变)。manifest.json:重新冻结全部文件 sha256 与 freezeRevision=13;兼容策略仍为 additive-only。
v1.1.0 冻结修订 13 — 2026-10-26T12:19:48.905Z
openapi.json:新增 15 个服务端 Open API 端点(175 → 190,additive),覆盖 聊天室治理(封禁列表 / 保活查询+移除 / 成员存在性单查+批量 / 禁言列表 / 全局禁言增删查 / 消息类型白名单增删查)、群成员禁言列表、用户所在群组分页查询、全体聊天室广播; 语义基线为融云 platform-chat-api 对应页面,仅对齐行为与字段,代码独立实现。callbacks.json+domain.json.CallbackEventType:回调事件 12 → 20, 新增user.online_status_changed、user.deactivated、user.reactivated、user.profile_changed、friend.changed、chatroom.kv_changed、message.modified、message.deleted(signature/envelope 不变)。manifest.json:重新冻结全部文件 sha256 与 freezeRevision=13;兼容策略仍为 additive-only。
v1.1.0 冻结修订 12 — 2026-10-26T10:46:27.453Z
- 新增 7 个客户端 IMLib 语义操作(additive;62 → 69 op),全部
transport: rest: - 消息扩展:
updateMessageExpansion、removeMessageExpansion(单聊/群聊/超级群;单次 ≤20 对、单条 ≤300 对) - 消息回应:
addMessageReaction、removeMessageReaction、batchGetMessageReactionSummaries、getMessageReactions、getMessageReactionUsers(reactionId 1-16;单条 ≤50 种、每种 ≤100 用户;分页 1-50) protocol.json:clientRest 新增 7 个 JWT 客户端端点(/messages/{messageId}/expansion、/expansion/remove、/reactions、/reactions/remove、/messages/reactions/batch、GET /reactions、GET /reactions/{reactionId}/users),与 Open API 的/message/expansion/*、/message/reaction/*共享同一领域状态errors.json:新增 5 个客户端错误码(33 → 38):1026MESSAGE_NOT_EXPANDABLE、 1027EXPANSION_LIMIT_EXCEEDED、1028REACTION_INVALID、1029REACTION_LIMIT_EXCEEDED、 1030REACTION_USER_LIMIT_EXCEEDEDsdk-bindings.json:web/flutter/android/electron/ios/harmony 六个平台各新增 7 条 methodMap; native(C ABI 子集,17 op)当前版本不扩展,保持显式差异- 语义基线:融云 IM 5.x
message/expansion、message/reaction、ultragroup/expand-message文档; 仅对齐语义与限制,不复刻其私有信令对象(RC:MsgExMsg)与版本相关字段长度差异 protocol.json:serverToClient 新增 2 个广播帧(19 → 21,wsFrames 29 → 31)——reaction_changed、expansion_changed,推送给会话参与者(含操作者自身多端),使"他人回应/扩展变更"可实时感知sdk-imlib.json:能力事件 12 → 14——MESSAGE_REACTION_CHANGED、MESSAGE_EXPANSION_CHANGED
v1.0.0 冻结修订 11 — 2026-10-24T05:01:17.711Z 涉及 IMKit
- sdk-bindings.json(additive):新增 4 个平台绑定(语义仍为 62 个 IMLib op + 10 个 IMKit 组件,未改动任何既有 op/错误码/事件/协议)
android:Kotlin(io.nipaas.imlib/io.nipaas.imkit);62/62 op + 10/10 组件;Android 形态差异仅init(context, options)与 callback-last,方法名与语义 op 同名electron:@ni-paas-im/electron(主进程 IMLib + 本地 SQLite / preload 具名白名单 / renderer 薄代理);62/62 + 10/10;imlib.localDbNamespace为本地库差异化能力,不计入冻结 62 opios:Swift 声明契约(规划期)——未提供但契约已备;sdk/ios/api-surface.json供零漂移校验- manifest.json:freezeRevision 10 → 11;
sdk-bindings.jsonsha256 更新;consumers 增加 sdk-android / sdk-electron / sdk-ios / sdk-harmony - 契约校验器:新增
sdk.binding.coverage(7 平台覆盖断言)与sdk.规划期.surface(iOS/HarmonyOS 预留声明断言) - 兼容性:additive-only;Open API / 管理 API / WS 协议 / 既有 4 端 SDK 行为零变更
v1.0.0 冻结修订 10 — 2026-10-23T14:15:00+08:00
- openapi.json(additive,7 ops,覆盖最后 7 项外部依赖接口;以“可配置外部服务代理”实现):
agent.chat.generate(覆盖 /v3/chat/generate)、agent.chat.suggest(覆盖 /v3/chat/suggest):转发到IM_AI_ENDPOINT,未配置返回 1021message.translate(覆盖 /v3/translate):转发到IM_TRANSLATE_ENDPOINT,未配置返回 1021user.proxychat.start/stop/list(覆盖 /v3/user/proxychat/{start,stop,query}):代聊状态管理user.profile.moderation.sync(覆盖 /user/profile/sync):接收审核结果并落库- 新增 schema:AgentChatResult / TranslateResult / ProxyChatState / ProxyChatList / ModerationSyncResult
- 至此对标矩阵 247/247(100%) 全部覆盖:无 P1/P2 缺口、无暂不实现项;外部 AI/翻译/审核能力通过可配置端点接入,未配置时按 1021 SERVICE_NOT_ACTIVATED 明确降级。
- 兼容性:additive-only。
v1.0.0 冻结修订 9 — 2026-10-23T13:10:00+08:00
- openapi.json(additive,23 ops,收口剩余可实现能力):
- 群特别关注:
group.member.follow.add/remove/list(覆盖 /entrust/group/member/follow|unfollow|followed/get) - 批量踢群:
user.group.kickAll(覆盖 /entrust/group/member/kick/all) - 群备注名:
group.remark.set/get/remove(覆盖 /entrust/group/remarkname/*) - 机器人管理:
bot.create/get/list/update/delete(覆盖 /v3/bot/*;对话运行时需外部模型) - Agent 管理:
agent.create/get/list/update/delete、agent.restriction.set/get/remove/list(覆盖 /v3/agent/*;对话生成需外部模型) - RTC 绑定:
chatroom.rtc.bind/get(覆盖 /chatroom/correlation/rtc;音视频能力需外部服务) - 新增 schema:GroupFollow / GroupFollowList / GroupKickAllResult / GroupRemark / GroupRemarkRemoveResult / Bot / BotList / BotDeleteResult / Agent / AgentList / AgentDeleteResult / AgentRestriction / AgentRestrictionList / AgentRestrictionRemoveResult / ChatroomRtc
- 仍暂不实现(纯外部依赖,7 项):
/v3/chat/generate、/v3/chat/suggest、/v3/translate(大模型/翻译)、/v3/user/proxychat/*(3,代聊需 AI 运行时)、/user/profile/sync(内容审核回调)。 - 兼容性:additive-only。
v1.0.0 冻结修订 8 — 2026-10-23T12:10:00+08:00
- openapi.json(additive,17 ops,收敛流式消息与推送运营域):
- 流式消息:
message.stream.start/append/end/get(覆盖融云 /message/get_stream、/v3/message/{private,group}/publish_stream) - 全量/在线广播:
message.broadcast、message.broadcast.recall、message.online.broadcast - 推送:
push.send(scope=all|tag|package|user|users,不落地、按推送配置 webhook 投递并记录日志;覆盖 /push、/push/user、/push/custom)、push.log.list(覆盖 /message/push/detail/history)、push.stats.day、push.stats.byId(覆盖 /stat/getDayPushData、/stat/getPushIdData) - 免打扰时段:
user.push.period.set/get/remove(覆盖 /user/blockPushPeriod/*) - 推送备注名:
push.remark.set/get/remove(覆盖 /user/remarks/* 与 /group/remarks/*) - 新增 schema:StreamInfo / BroadcastResult / BroadcastRecallResult / PushResult / PushLog / PushLogPage / PushStats / PushPeriod / PushPeriodRemoveResult / PushRemark / PushRemarkRemoveResult
- 仍暂不实现(外部依赖):AI 生成/回复建议/翻译/代聊、内容审核与托管信息审核回调、Bot/Agent 运行时、群特别关注/群备注名、频道 RTC 绑定。
- 兼容性:additive-only。
v1.0.0 冻结修订 7 — 2026-10-23T10:55:00+08:00
- openapi.json(additive,21 ops,覆盖剩余可实现能力):
- 消息回应(reaction):
message.reaction.add/remove/list/users/batch(覆盖融云 /message/*/reaction/* 共 5 条路径) - 模板消息:
message.template.publish(覆盖单聊/群/系统通知模板发送,内置 welcome/notification/order 模板) - 用户注销/激活:
user.deactivate、user.reactivate、user.deactivated.list - 超级群私有频道:
supergroup.channel.create/list/delete/type.set/members.add/members.remove/members.list/usergroup.bind/usergroup.unbind/usergroup.list(覆盖融云 /ultragroup/channel/* 共 10 条路径) - 聊天室消息优先级:
chatroom.message.priority.set/list(覆盖 /chatroom/message/priority/* 共 3 条路径) - 新增 schema:MessageReaction / ReactionRemoveResult / ReactionItem / MessageReactionSummary / ReactionUsers / ReactionBatchItem / ReactionBatch / UserDeactivation / UserDeactivationList / Channel / ChannelList / ChannelDeleteResult / ChannelMembers / ChannelBinding / ChannelBindingList / ChatroomPriority
- 明确暂不实现(需第三方/流式传输):
/message/get_stream、/v3/message/*/publish_stream(流式消息)、AI/Bot/推送运营/RTC/内容审核。 - 兼容性:additive-only。
v1.0.0 冻结修订 6 — 2026-10-23T10:05:00+08:00
- openapi.json(additive,23 ops,覆盖对标矩阵剩余 P2 项):
- 用户:
user.ban.list、user.delete、user.profile.clean、user.subscription.set/get - 好友:
friend.check、friend.clean、friend.permission.set/get、friend.profile.set - 群:
group.mute-all/group.mute-all.get(群全员禁言,覆盖融云 /group/ban/add|rollback|query)、group.ban.whitelist.add/remove/list(群全员禁言白名单)、group.import、group.member.update - 聊天室:
chatroom.destroy.policy.set(空闲/定时销毁策略) - 超级群用户组:
supergroup.usergroup.create/list/delete/members.add/members.remove/by-user/channels - 新增 schema:UserBanPage / UserDeleteResult / UserSubscription / FriendCheckResult / FriendCleanResult / FriendPermission / FriendProfile / GroupBanWhitelist / GroupImportResult / UserGroup / UserGroupList / UserGroupDeleteResult / UserGroupChannels
- 明确暂不实现(第三方依赖):
/user/profile/sync(托管信息审核结果回调,依赖内容审核服务)。 - 兼容性:additive-only。
v1.0.0 冻结修订 5 — 2026-10-23T09:30:00+08:00
- openapi.json(additive,12 ops,覆盖对标矩阵剩余 P1 项):
- 消息:
message.modify(服务端改消息,单聊/群/超级群统一)、message.history.clean(清除远端历史) - 单聊禁言:
user.chat.mute、user.chat.mute.list - 标签:
user.tag.set/get/batch.set(用户标签)、conversation.tag.set/remove/list(会话标签,同时覆盖融云 /user/conversation/tag/* 与 /tag/conversation/*) - 聊天室全体禁言:
chatroom.mute-all、chatroom.mute-all.get(覆盖融云 /chatroom/ban/add|rollback|query|check) - 新增 schema:MessageCleanResult / ChatMuteItem / ChatMuteList / UserTags / UserTagBatchResult / ConversationTagItem / ConversationTagRemoveResult / ConversationTagList / ChatroomMuteAll
- 超级群历史消息搜索复用既有
message.search(语义等价,不新增接口)。 - 兼容性:additive-only。
v1.0.0 冻结修订 4 — 2026-10-22T23:25:00+08:00
- openapi.json(additive,18 ops):补齐对标矩阵 Top gaps 中的服务端 Open API:
- 群:
group.join(公开群/超级群加入)、group.transfer(群主转让) - 聊天室治理(P1):
chatroom.kv.set/get/remove、chatroom.mute、chatroom.ban、chatroom.whitelist.add/remove/list - 用户治理:
user.whitelist.add/remove/list(私聊白名单)、user.token.revoke(主动作废 token)、user.batch.get(批量资料) - 消息扩展:
message.expansion.set/get/remove - 新增 schema:ChatroomKv / ChatroomKvList / ChatroomWhitelist / UserWhitelist / UserTokenState / UserBatch / MessageExpansion
- admin-api.json(additive,3 ops):
admin.callbacks.test(回调测试事件)、admin.users.batchRegister(批量注册)、admin.messages.export(消息 CSV 导出);新增 schema AdminBatchRegisterResult / MessageExport。 - 兼容性:additive-only;不影响既有 operation 语义与数值。
v1.0.0 冻结修订 3 — 2026-10-22T18:24:36+08:00
- admin-api.json(additive):新增
admin.users.get、admin.users.mute、admin.users.resetToken、admin.metrics.overview及AdminUserDetail/MetricsOverviewschema,对齐运营后台用户管理与看板需求。 - 命名统一(与 admin-console 规格对齐,最终以本 IDL 为准):
- ConversationType:1=PRIVATE、2=GROUP、3=CHATROOM、4=SYSTEM;超级群 = GROUP + groupType="super"(不占用 conversationType 4)。
- ServiceKey(snake_case):private_chat、group、supergroup、chatroom、system_notification、callbacks、message_routing、sensitive_words。
- 错误码沿用 errors.json:1009 群禁言、1015 成员上限、1016 封禁、1017 应用停用、1021 服务未开通、1025 配额、2002 依赖不可用(未提供端点临时 501)。
- 兼容性:additive-only。
v1.0.0 冻结修订 2 — 2026-10-22T18:19:19+08:00
- protocol.json:
clientRest增补聊天室客户端 REST 形状(冻结跨端约定,Flutter/Web/Native/server-core 共同遵循): POST /api/apps/{appkey}/chatrooms(Bearer,创建)GET /api/apps/{appkey}/chatrooms/{chatroomId}(信息)GET /api/apps/{appkey}/chatrooms/{chatroomId}/members?offset&limit(在线成员)DELETE /api/apps/{appkey}/chatrooms/{chatroomId}(owner 销毁)- 系统通知历史复用
GET /api/apps/{appkey}/messages?conversationType=4&targetId=system&limit&beforeSeq - 原因:跨端联调发现聊天室缺客户端 REST 面;由 flutter-sdk 提出、Lead 冻结,避免四端漂移。
- 兼容性:additive-only,无破坏性变更。
v1.0.0 — 2026-10-22 冻结 涉及 IMKit
首个冻结版本。覆盖范围:
领域模型(domain.json)
- 枚举:ConversationType(PRIVATE=1 / GROUP=2 / CHATROOM=3 / SYSTEM=4)、GroupType(normal/super)、Direction、ConnectionStatus、NotificationLevel、ContentType(text/image/file/voice/location/custom/recall/system)、SystemType、GroupRole、MentionType、FriendRequestStatus、ChatroomEventKind、FriendEventKind、CallbackEventType、ServiceKey。
- 数据结构:Message、Content、Conversation、User/UserProfile、Group/GroupMember(含超级群扩展)、Chatroom/ChatroomMember、FriendRequest/Friend/BlacklistEntry、ReadReceipt、MessageTrace、CallbackConfig/CallbackDelivery/CallbackEnvelope、ServiceActivation、AdminApp、OpsStats、ContractIntrospection、统一响应信封(RcResult/OpenApiResponse/Page)。
错误码(errors.json)
- 1001–1025 客户端/参数/权限/签名/配额类;2001–2004 服务端/依赖类;3001–3004 SDK 本地类。含 httpStatus、retryable、中英文案。新增:1012–1014 聊天室、1015 成员上限、1016 封禁、1017 应用停用、1018–1020 Open API 签名、1021 服务未开通、1022–1023 撤回、1024 回调配置、1025 配额;2004 回调投递。
客户端协议(protocol.json)
- 既有:connect/send/ack/read/read_receipt/recall/typing/sync/ping + hello/message/send_ack/…/error。
- 新增:chatroom_join / chatroom_leave / chatroom_joined / chatroom_left / chatroom_event / kick。
- 语义:心跳 30s、pong 60s 超时重连、指数退避;离线补发 + at-least-once + ACK 游标;多端副本;聊天室在线态不落离线;超级群=GROUP+groupType=super;系统通知=SYSTEM 会话;消息上限 5KB;撤回 120s;离线每会话 500 条。
Open API(openapi.json)
- 全部 POST;
/im/v2基路径;App-Key/Nonce/Timestamp/Signature=hex(sha1(secret+nonce+timestamp));统一{code,msg?,data?,requestId?}。 - 覆盖用户/好友/黑名单、消息(单聊/群/聊天室/系统通知/撤回/历史/已读/搜索/轨迹)、群与超级群、聊天室、会话、在线状态、敏感词、回调配置与投递、服务开通、统计。
管理 API(admin-api.json)
- X-Admin-Secret;应用与密钥、测试用户与 token、群/聊天室、消息查询与轨迹、连接监控、服务开通、回调配置与投递、推送通道、敏感词、运营统计、API 调试元数据。
SDK(sdk-imlib.json / sdk-imkit.json / sdk-bindings.json)
- IMLib 语义操作 60+(连接、消息、会话、用户、好友、群/超级群、聊天室、系统通知、上传);事件 13 个。
- IMKit 组件 11 个(会话列表、会话详情、消息气泡、输入区、头像、角标、时间分隔、状态、主题、门面等),约束 IMKit 仅调用 IMLib 公开接口。
- 平台绑定:Web(ESM,IMClient)、Flutter(Dart,RongIMClient + Widgets)、Native(Rust core + C ABI,IMLib/IMKit view-model)。
回调(callbacks.json)
- 信封 + HMAC-SHA256 签名(X-IM-Timestamp/Nonce/Signature)+ 重试退避 + 投递日志 + 手动重试。
- 事件:message.routed(全量消息路由)、message.offline、message.recalled、read.receipt、user.registered、user.banned、group.created/updated/destroyed、chatroom.created/destroyed/member_changed。
后续规划(v1.x,additive-only)
- v1.1(规划):端级离线游标(multi-device per-device cursor)、消息编辑/Reaction、广播消息、群公告变更事件细化。
- v1.2(规划):对象存储直传签名、消息已读回执批量接口、好友分组。
- 所有 v1.x 变更必须更新 manifest 哈希与本文档。