外观
Flutter 接入
密信 IM 开发版 5.0 的 Flutter 四包面向 Android/iOS。默认 IM 运行时使用 Dart,IM SDK 不包含 Widget、页面或路由;标准界面与通话能力独立提供。
环境与组件
| 项目 | 环境与配套要求 |
|---|---|
| 产品与组件版本 | 开发版 5.0 产品体系,组件包版本按授权清单配套 |
| Flutter / Dart | Flutter ≥ 3.41.9;Dart ≥ 3.11.5 且 < 4.0.0 |
| 系统 | Android API 24 起;iOS 15.5 起 |
| 组件 | mixinim_sdk、mixinim_uikit、mixinim_call_sdk、mixinim_call_uikit |
四包共用账号、Session 与通信状态,可按聊天界面和通话需求选择依赖。
取得并引用授权包
授权包保留四包的相邻目录与配套版本。以下示例将套件解压到应用的 vendor/mixinim/packages/,使用本地路径引用;依赖版本由包内清单确定。
yaml
dependencies:
mixinim_sdk:
path: vendor/mixinim/packages/mixinim_sdk需要标准聊天界面时依赖同版 mixinim_uikit,它会导出 IM SDK 公共入口;需要通话界面时再增加 mixinim_call_uikit。保持授权包中的依赖来源与配套关系。
初始化与连接
先由你的业务后端取得当前用户、设备与平台绑定的 Session。宿主账号控制器先执行 final sdk = MixinImSdk.create(); 并保留实例,再调用下面的初始化与连接函数。函数不创建或转移实例所有权,也不在客户端生成登录凭据:
dart
import 'package:mixinim_sdk/mixinim_sdk.dart';
Future<void> connectIm(
MixinImSdk sdk,
MixinImConfig config,
MixinImSession session,
) async {
await sdk.initialize(config);
await sdk.connect(session);
}config 配置客户的 REST/WebSocket 地址、存储命名空间和 refreshSession 回调。session 来自宿主认证结果,不能复用其他设备的绑定。初始化或连接失败时,宿主仍持有 sdk,可按错误类型处理;确定放弃该实例或退出账号时执行 await sdk.dispose(),不要在失败后直接丢弃引用并新建实例。完整顺序见生命周期。
界面与功能入口
使用 sdk.conversations、sdk.messages、sdk.contacts、sdk.groups 等公共入口;订阅 messageEventStream、connectionStateStream 与 unreadCountStream 展示变化。标准页面通过 MixinImChatPage.sdk(...) 连接同一个实例,详见UIKit 接入。
App 的根导航、登录、业务 Token、个人中心与账号设置仍由宿主负责。只导入 package:mixinim_sdk/mixinim_sdk.dart 或相应 UIKit 公共入口,不依赖包内 src/ 私有文件。
本地存储
默认 SDK 使用按账号隔离的 SQLite,可按宿主策略配置 SQLCipher 与密钥提供方。数据库加密不自动覆盖附件、缩略图或系统通知,详见安全配置。
同一账号数据库由一个 SDK 实例管理。切换账号时先释放旧实例,再为新账号初始化独立存储。
集成检查
Android 正式 Manifest 声明网络权限,iOS/Android 按实际入口配置相机、麦克风和其他用途;通话另按 Call 权限接入。验证断网恢复、切号、退出、附件失效和媒体资源释放后,再进入实际发布流程。