iOS IMKit 快速开始
本页在 5 个步骤内完成 iOS 端 IMKit 接入:先接入 IMLib,再初始化门面,最后挂载会话列表与会话页。IMKit 只消费 IMLib 的公开数据,不重复实现通信能力。
- 接入 IMLib
按 IMLib 快速开始 完成初始化与连接;IMKit 不重复建立连接。
- 导入 IMKit
按「导入 SDK」安装依赖;只依赖 IMLib 公开协议与模型;不得 import 传输层/存储实现(sdk-imkit.json dependencyRule)
- 初始化门面
初始化 IMLib 客户端并连接,然后创建 IMKit 门面(或调用静态 init);门面持有主题、语言与组件实例。
- 挂载会话列表
传入 conversations 与交互回调;会话数据来自 IMLib 的 getConversationList 与 CONVERSATION 事件。
- 挂载会话页与输入区
传入 messages / currentUserId / hasMore;发送与已读回调转调 IMLib 对应接口。
1. 接入 IMLib
IMKit 的所有数据都来自 IMLib 公开接口:连接、会话列表、历史消息、发送、已读回执与未读清零。先完成 IMLib 接入再使用 IMKit。
2. 导入 IMKit
CocoaPods / SPM / XCFramework
# CocoaPods(推荐)
pod 'ImpIaaSIMKit', '~> 1.0'
# Swift Package Manager
# .package(url: "https://example.com/ImpIaaSIMKit.git", from: "1.0.0")
# 手动集成:把 ImpIaaSIMKit.xcframework 拖入工程 General → Frameworks 并选择 Embed & Sign3. 初始化门面
Swift
import ImpIaaSIM
import ImpIaaSIMKit
let client = ImpIaaSIM.client(options: IMPClientOptions(
appkey: "YOUR_APP_KEY",
serverUrl: "https://im.example.com"
))
let controller = IMPChatViewController(conversationType: .privateChat, targetId: "user2")
controller.client = client
navigationController.pushViewController(controller, animated: true)门面:IMKitFacade;门面 IMKitFacade.mount(in:) / update(_:) / destroy() 为 Swift 入口;Objective-C 侧通过 IMPOSChatViewController / IMPOSConversationListViewController 定制,不导出独立门面类。
4. 挂载会话列表
let view = ConversationListView(frame: .zero)
view.client = client
container.addSubview(view)// ObjC 表面:- (instancetype)init; @property IMPOSClient *client; - (void)reloadData;
IMPOSConversationListViewController *list = [[IMPOSConversationListViewController alloc] init];
list.client = client; // 注入 IMLib 客户端
[list reloadData]; // 重新拉取并刷新会话列表5. 挂载会话页与输入区
let view = ChatView(frame: .zero)
view.client = client
view.conversationType = .privateChat
view.targetId = "user2"
container.addSubview(view)// ObjC 表面:- (instancetype)initWithConversationType:targetId:; @property IMPOSClient *client;
IMPOSChatViewController *chat = [[IMPOSChatViewController alloc] initWithConversationType:1
targetId:@"user2"];
chat.client = client;
[self.navigationController pushViewController:chat animated:YES];