外观
嵌入标准 UIKit
UIKit 负责标准 IM 界面与交互,SDK 负责通信和数据。先由宿主完成认证、创建并连接 SDK,再将同一个实例交给界面组件。
接入前确认
- 已取得平台对应的授权组件,SDK 与 UIKit 版本配套。
- 已完成业务账号与 Session,当前 SDK 连接属于当前登录用户。
- 宿主准备用户可展示资料、页面导航与实际功能需要的权限处理。
- 如需通话,另外接入同账号的 Call SDK/UIKit。
Flutter 最小嵌入
依赖授权的 mixinim_uikit,从其公共入口导入,它同时导出 IM SDK API。下面方法构建会话列表,并把会话点击交给宿主导航:
dart
import 'package:flutter/material.dart';
import 'package:mixinim_uikit/mixinim_uikit.dart';
Widget buildConversations(
BuildContext context,
MixinImSdk sdk,
MixinImUser currentUser,
) {
final config = MixinImUIKitConfig(currentUser: currentUser);
return MixinImConversationList(
controller: sdk.conversationController,
currentUserId: sdk.currentSession?.userId,
onConversationTap: (conversation) {
Navigator.of(context).push(MaterialPageRoute<void>(
builder: (_) => MixinImChatPage.sdk(
sdk: sdk,
conversation: conversation,
config: config,
),
));
},
);
}这段代码不创建新的账号和连接。sdk 已由宿主初始化登录,currentUser 来自当前用户资料;宿主提供 Material 页面与足够布局空间,并在登录或切号后更新配置。
MixinImChatPage.sdk(...) 负责为该页面建立聊天控制器、绑定事件、标记活动会话并在页面结束时释放自己的控制器。宿主继续拥有 SDK,不应在每次关闭聊天页时注销整个应用。
其他平台如何嵌入
| 平台 | 标准接入点 | 宿主负责 |
|---|---|---|
| Android | MixinImUIKitHost、会话/聊天 Fragment 或 View | SDK、当前用户、页面栈、系统栏与媒体权限 |
| iOS | MixinImConversationListViewController、MixinImChatViewController | 导航控制器、SDK、用户资料与平台回调 |
| Web / Electron | Vue 3 ImChat、ImConversationList、ImContacts | 已连接客户端、业务导航;Electron 另保留受限主进程桥 |
| uni-app | mixinim-chat 等标准组件 | 应用级账号生命周期、页面路由和目标平台配置 |
| 微信 | WXML/WXSS 组件及 bindClient(im) | 应用持有 SDK,页面只绑定可展示数据 |
入口名称与可扩展范围按各平台文档区分,不将 Flutter 的 Builder 参数直接复制到其他平台。
连接现有业务页面
客户原有的登录、注册、账号安全、个人中心、订单或业务工作台可以保留。UIKit 通过回调进入这些页面;IM 范围内的会话、联系人和群操作继续走公开 SDK。
收藏、举报、位置服务和业务卡片按对应接入说明配置业务接口、权限与宿主回调。按产品所启用的功能组织入口,账号和业务导航继续由宿主管理。
接入后的检查
验证会话进入/返回、消息与历史、键盘、深色模式、切号以及权限拒绝。页面卸载后取消本页异步操作和订阅,避免旧账号结果写回新页面;收到服务端权限拒绝时显示真实失败,不只依赖前端按钮的可见性。