Skip to content
密信 IM · 开发文档

发起、接听与结束 ​

通话界面监听同一个 Call Controller。按钮调用控制器操作,页面根据控制器状态展示来电、连接、通话及结束结果。

发起单聊 ​

dart
await calls.controller.startCall(
  participants: const [
    MixinImCallParticipant(
      userId: '90002',
      displayName: '测试用户 B',
    ),
  ],
  mediaType: MixinImCallMediaType.audio,
  currentUserName: '测试用户 A',
);

calls 是已初始化且绑定当前 IM 的实例,示例用户需替换为真实测试账号。participants 只传被邀请者,SDK 自动加入当前用户。视频使用配套媒体类型,并完成摄像头权限接入。

群通话还需指定群范围、群 ID 与对应成员。当前总人数最多 9 人,所有操作仍须经过服务端的用户状态、关系与群成员校验。

关键状态 ​

阶段页面行为
拨出等待展示被叫资料与取消入口
来电待接展示主叫资料、接听与拒接
媒体连接中停止重复接听,显示连接进度
通话中根据真实轨道与音频路由更新控件
结束或失败展示结果并等待资源释放

邀请到达、接听和媒体建立分别对应不同阶段。有效通话时长从媒体连接建立后开始累计,控件跟随媒体状态更新。

接听与结束 ​

dart
// 在用户点击对应按钮时分别调用,不要顺序连续执行。
await calls.controller.accept();
await calls.controller.reject();
await calls.controller.hangup();

默认 Call UIKit 已组织这些操作;自定义页面负责展示和用户交互,通话状态与媒体释放仍交给 SDK。

通话结束后由 SDK 释放媒体房间、系统音频和占用状态。重拨使用新的通话流程与房间授权。

失败与恢复 ​

被对方隐私设置阻止时可收到 call_peer_blocked,关系不允许时可收到 call_relationship_denied。这些是业务拒绝,不是持续重试网络连接能够解决的问题。

网络切换、授权续期和媒体连接异常由控制器统一协调。媒体授权使用绑定当前通话与房间的短效 Token。

声音输出 ​

音频路由由 Call SDK 统一控制。页面通过 audioRouteState 展示听筒、扬声器和可选外设;用户切换后,以返回的路由状态更新选中项。

联调覆盖忙线、拒接、超时、连续重拨、群成员离开、弱网切换与挂断后普通媒体恢复。后台和权限要求见 权限与后台来电。

开始构建你的通讯体验

获取授权包、完整接口资料与接入支持。

LET’S BUILD TOGETHER

聊聊你的通讯需求

联系密信团队,获取 SDK 授权、接入资料与私有化方案。

咨询内容:
客服微信mixinim
客服 QQ629900
联系邮箱mixinim@126.com

SDK 与源码按授权范围交付。此处不提供公开下载。