iOS IMKit 快速开始

本页在 5 个步骤内完成 iOS 端 IMKit 接入:先接入 IMLib,再初始化门面,最后挂载会话列表与会话页。IMKit 只消费 IMLib 的公开数据,不重复实现通信能力。

  1. 接入 IMLib

    按 IMLib 快速开始 完成初始化与连接;IMKit 不重复建立连接。

  2. 导入 IMKit

    按「导入 SDK」安装依赖;只依赖 IMLib 公开协议与模型;不得 import 传输层/存储实现(sdk-imkit.json dependencyRule)

  3. 初始化门面

    初始化 IMLib 客户端并连接,然后创建 IMKit 门面(或调用静态 init);门面持有主题、语言与组件实例。

  4. 挂载会话列表

    传入 conversations 与交互回调;会话数据来自 IMLib 的 getConversationList 与 CONVERSATION 事件。

  5. 挂载会话页与输入区

    传入 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 & Sign

3. 初始化门面​

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];

下一步​