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'
end
Text
// 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 类用途
IMPOSClientIMLib 客户端(连接、消息、会话、群组等)
IMPOSChatViewControllerIMKit 会话页(真实 ObjC 类)
IMPOSConversationListViewControllerIMKit 会话列表页(真实 ObjC 类)
IMPOSGlobalChatViewControllerGlobal UIKit 会话页(真实 ObjC 类)
IMPOSGlobalChatListViewControllerGlobal 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、主题定制。