iOS IMKit 集成
IMKit 在 IMLib 之上提供 10 个 UIKit 组件与门面 IMKitFacade。集成方式与 IMLib 相同(CocoaPods / SPM / XCFramework),但依赖方向严格单向:IMKit 只依赖 IMLib 公开协议与模型,不 import 传输层 / 存储实现。
依赖方式
Text
# Podfile:IMKit 会传递依赖 IMLib,无需重复声明
target 'YourApp' do
pod 'ImpIaaSIMKit', '~> 1.0'
endText
// Package.swift
.package(url: "https://example.com/ImpIaaSIMKit.git", from: "1.0.0")手动集成:同时导入 `ImpIaaSIMKit.xcframework` 与其依赖的 `ImpIaaSIM.xcframework`,两者都设为 Embed & Sign。
framework 与源码不要混用
IMKit 的 framework 形态与源码 pod 形态只能二选一:同一工程同时引入两份实现会出现重复符号、类名冲突或“修改源码不生效”。
需要改 UI 实现时用源码 pod;只需要配置 / 主题 / 组件组合时用 framework。
门面与组件
| 项 | 值 |
|---|---|
| 门面 | IMKitFacade |
| 挂载 | IMKitFacade.mount(in: UIView) / update(_:) / destroy() |
| 导出符号 | IMPConversationListView、IMPChatView、IMPMessageBubble、IMPMessageInput、IMPAvatar、IMPUnreadBadge、IMPTimeSeparator、IMPMessageStatusIndicator、IMPTheme、IMKitFacade |
| 依赖约束 | 只依赖 IMLib 公开协议与模型;不得 import 传输层/存储实现(sdk-imkit.json dependencyRule) |
Swift 接入
Swift
import ImpIaaSIM
import ImpIaaSIMKit
let facade: IMKitFacade = IMPKitFacadeImpl(options: IMPKitOptions(appkey: "YOUR_APP_KEY"))
facade.mount(in: view) // 门面接管容器内的会话列表 / 会话页
let controller = IMPChatViewController(conversationType: .privateChat, targetId: "user2")
controller.client = client
navigationController.pushViewController(controller, animated: true)
Objective-C 接入
Objective-C 示例已隐藏(含未导出符号)
该示例引用了 SDK 头文件未导出的符号(多为 Swift 专用 helper)。请使用下表真实 ObjC 类,或参考对应组件页的 Objective-C 接入说明。
| 可用 ObjC 类 | 用途 |
|---|---|
IMPOSClient | IMLib 客户端(连接、消息、会话、群组等) |
IMPOSChatViewController | IMKit 会话页(真实 ObjC 类) |
IMPOSConversationListViewController | IMKit 会话列表页(真实 ObjC 类) |
IMPOSGlobalChatViewController | Global UIKit 会话页(真实 ObjC 类) |
IMPOSGlobalChatListViewController | Global UIKit 会话列表页(真实 ObjC 类) |
组件级集成
不需要整套门面时,可单独使用组件协议:宿主实现协议方法(props / events),把数据从 IMLib 注入。10 个组件的 props / events / behaviors 见各组件页。
ConversationListView· 会话列表(ObjC 类IMPOSClient)ChatView· 会话详情(消息流 + 输入区)(ObjC 类IMPOSClient)MessageBubble· 消息气泡(按内容类型渲染)(Swift 专用 helper;ObjC 通过IMPOSChatViewController/IMPOSConversationListViewController定制)MessageInput· 输入区(Swift 专用 helper;ObjC 通过IMPOSChatViewController/IMPOSConversationListViewController定制)Avatar· 头像(Swift 专用 helper;ObjC 通过IMPOSChatViewController/IMPOSConversationListViewController定制)UnreadBadge· 未读/提及角标(Swift 专用 helper;ObjC 通过IMPOSChatViewController/IMPOSConversationListViewController定制)TimeSeparator· 时间分隔/格式化(Swift 专用 helper;ObjC 通过IMPOSChatViewController/IMPOSConversationListViewController定制)MessageStatusIndicator· 发送状态(Swift 专用 helper;ObjC 通过IMPOSChatViewController/IMPOSConversationListViewController定制)Theme· 主题令牌(Swift 专用 helper;ObjC 通过IMPOSChatViewController/IMPOSConversationListViewController定制)IMKitFacade· 组件门面/挂载入口(ObjC 类IMPOSKitFacade)
集成检查清单
- IMLib 已完成初始化与连接,再挂载 IMKit(IMKit 不负责建连)。
- 组件销毁时调用 `destroy()`(ObjC 同名),只销毁 UI,不断开连接。
- 主题与 locale 通过门面 update 生效,不需要重建视图。
- 自定义消息类型时注册渲染器,不要修改 SDK 内部视图层级。
相关:IMKit 快速开始、功能列表、组件 API、主题定制。