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(当前)GA10 个组件 + 门面,Swift / Objective-C 双接口
后续 1.xadditive-onlyprops / events 只增不改,组件符号保持稳定

IMKit 是什么​

层职责不做什么
IMLib连接、消息、会话、群组、好友、聊天室、上传(62 个语义 op)不提供 UI
IMKit10 个 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会话列表43IMLib.getConversationList / CONVERSATION 事件增量更新会话列表
ChatView会话详情(消息流 + 输入区)812—会话详情(消息流 + 输入区)
MessageBubble消息气泡(按内容类型渲染)98—消息气泡(按内容类型渲染)
MessageInput输入区57—输入区
Avatar头像40—头像
UnreadBadge未读/提及角标30—未读/提及角标
TimeSeparator时间分隔/格式化20—时间分隔/格式化
MessageStatusIndicator发送状态30—发送状态
Theme主题令牌20—主题令牌
IMKitFacade组件门面/挂载入口12—组件门面/挂载入口

包与门面​

项值
包 / 模块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)

快速链接​

相关文档​