iOS IMKit
iOS 端 IMKit 在 IMLib 之上提供 10 个可组合 UI 组件(会话列表、会话页、气泡、输入区、头像、未读角标、时间分割、发送状态、主题与门面):组件语义跨端一致,只有 UI 框架与挂载方式不同。本端形态:UIKit 视图容器 + 组件协议(Swift / Objective-C 双接口),宿主负责装配页面。
平台状态
契约 IDL v1.0.0(frozen,冻结修订 35);组件数 10;绑定状态:ga。IMKit -> IMLib(公开接口)only;IMKit 禁止 import 内部传输层/REST 实现/服务端类型。
平台兼容性
| 项 | 值 |
|---|---|
| 系统版本 | iOS 13.0+(最低) |
| UI 框架 | UIKit(UIView / UIViewController),Swift + Objective-C 双接口 |
| 接口语言 | Swift 5.9+ / Objective-C(`IMP*` 符号) |
| 集成方式 | CocoaPods framework / CocoaPods 源码 / SPM / 手动 XCFramework(与 IMLib 一致) |
| 组件数 | 10 个(会话列表、会话页、气泡、输入区、头像、角标、时间分割、状态、主题、门面) |
版本支持
| 版本 | 状态 | 说明 |
|---|---|---|
| 1.0.x(当前) | GA | 10 个组件 + 门面,Swift / Objective-C 双接口 |
| 后续 1.x | additive-only | props / events 只增不改,组件符号保持稳定 |
IMKit 是什么
| 层 | 职责 | 不做什么 |
|---|---|---|
| IMLib | 连接、消息、会话、群组、好友、聊天室、上传(62 个语义 op) | 不提供 UI |
| IMKit | 10 个 UI 组件与门面/主题/格式化 | 不直连网络 / 数据库;只调用 IMLib 公开接口 |
| 宿主应用 | 页面导航、业务数据装配、权限与通知 | 不需要重复实现气泡/角标/时间分割 |
IMKit -> IMLib(公开接口)only;IMKit 禁止 import 内部传输层/REST 实现/服务端类型。
跨端验收口径(IDL crossPlatformAcceptance)
每个平台 IMKit 必须覆盖上述组件语义;无 UI 的平台(Native C ABI)以实现 view-model/格式化/角标/状态计算层交付,并提供可运行示例
IMKit 所有对外行为必须能仅通过 IMLib 公开接口复现(契约校验器静态扫描 import 面)
Web 与 Flutter Demo 必须只通过 IMKit/IMLib 公开接口实现页面,不得直接 fetch/WebSocket/数据库
组件总览
| 组件 | 职责 | Props | 事件 | 数据源 | 文档 |
|---|---|---|---|---|---|
ConversationListView | 会话列表 | 4 | 3 | IMLib.getConversationList / CONVERSATION 事件增量更新 | 会话列表 |
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 | — | 组件门面/挂载入口 |
包与门面
| 项 | 值 |
|---|---|
| 包 / 模块 | Sources/ImpIaaSIM/IMKit |
| 模块路径 | ImpIaaSIM(IMKit 子目录;实现阶段建议拆为独立 target ImpIaaSIMKit) |
| 门面 | IMKitFacade |
| 挂载方式 | IMKitFacade.mount(in: UIView) / update(_:) / destroy() |
| UI 框架 | UIKit 视图容器 + 组件协议(Swift / Objective-C 双接口),宿主负责装配页面 |
| 导出符号(10) | IMPConversationListView、IMPChatView、IMPMessageBubble、IMPMessageInput、IMPAvatar、IMPUnreadBadge、IMPTimeSeparator、IMPMessageStatusIndicator、IMPTheme、IMKitFacade |
| 约束 | 只依赖 IMLib 公开协议与模型;不得 import 传输层/存储实现(sdk-imkit.json dependencyRule) |
快速链接
- 快速开始:挂载会话列表与聊天页
- 导入 SDK:包、制品与依赖约束
- 初始化:门面挂载与幂等
- 功能列表:10 个组件能力矩阵
- 组件 API:props / events / behaviors
- 主题定制、多语言
- 状态码、更新日志
相关文档
- iOS IMLib:通信核心(IMKit 的唯一依赖)
- IMKit 集成指南
- SDK 体系 · IMKit