Global IM UIKit 路由
`ChatRouter` 把「打开会话 / 打开资料页」从 ViewController 中抽出来,默认实现 push / present,宿主可以替换为自定义路由(深链、分栏、多窗口)。
契约
| 属性 | 类型 | 说明 |
|---|---|---|
navigation | any | 宿主导航控制器;默认实现 push / present |
事件
| 事件 | 参数 | 说明 |
|---|---|---|
openChat | conversation | 打开会话 |
openProfile | userId | 打开用户资料 |
默认与自定义路由
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 类) |
// ios-imkit/uikit/customization/router
let router = IMPChatRouter(navigation: navigationController)
print(router)约定
- Delegate 只回调,不导航;导航统一走 Router,便于埋点与深链。
- 深链进入时先冷启动 IMLib 连接,再打开会话;不要在路由层创建第二个客户端。
- 路由失败(目标不存在 / 无权限)回调宿主提示,不静默失败。
- 多窗口 / 分栏场景由自定义 Router 决定容器,Global UIKit 不假设导航栈结构。