Skip to main content
会议 SDK 的事件全部走一个接口 SMeetingDelegate,注册在引擎上:
所有回调的第一个参数都是引擎实例 meeting,第二个参数是该事件的数据对象。 下面的表格省略第一个参数。两个例外:onUserEnter 的第二个参数直接是 MeetingUserInfoonDeviceAdd / onDeviceRemove 的第二个参数直接是 DeviceInfo
delegates 是强引用,必须成对 add / remove,退出时还要调 dispose()ArkTS 既没有弱引用、也没有 deinit。漏掉会导致监听者永不回收、且离开页面后仍收到回调。

连接状态

onReconnecting / onReconnected 之间 SDK 会自行恢复,业务侧只需更新连接指示。 收到 onDisconnected 才走”退出会议”流程。
onMediaStateChange 与上面三个不是同一条线。onMeetingReconnecting / onMeetingReconnected 说的是信令面onMediaStateChange 说的是画面和声音还在不在。两者会各自独立地断开与恢复。会议 UI 的「网络异常」提示应当同时看这两条线:只接信令那条会出现”提示已经消失、画面还是黑的”;只接这条会漏掉成员列表已经不再更新。收到 disconnected 表示 SDK 已放弃重连、不会再自行恢复,此时应引导用户重新入会。参数 reason 只用于日志,不要拿它做分支判断状态取值见 MediaConnectionState

成员

byAdminopUid? 的事件表示”是谁操作的”:byAdmintrueopUid 是操作者。UI 上提示”你已被主持人静音”就靠这两个字段。

成员媒体状态

拿到 onUserCameraStateChangecameraState === CameraState.on 时才去 subscribeRemoteVideoTrack(uid),关掉时退订 —— 这是控制带宽的主要手段。

举手

HandupType 区分举手的用途:mic / camera / chat / shareUserHandupStep 是流转步骤:request / cancel / confirmOpen / rejectOpen 详见举手

房间级会控

这一组都是主持人改了全局开关。字段形如 xxxDisabled: boolean + opUid?
micDisabledselfUnmuteMicDisabled 是两件事:
  • micDisabled —— 现在是不是全体静音状态
  • selfUnmuteMicDisabled —— 成员能不能自己解除静音
两者组合出三种常见形态:自由发言、全体静音但可自行解除、全体静音且不可自行解除。 UI 上”开麦”按钮的可用性要同时看这两个字段。摄像头同理。

共享

ShareTypescreenwhiteBoard 两种。

消息

ChatMsgTypetext / file / pic / soundisPrivatetrue 表示私聊。 msg 统一是字符串 —— 结构化内容(文件、图片元信息)需要自己 JSON.parse

录制与点名

McuTaskStatusexceptionerrDesc 有原因,UI 上要提示(录制出问题用户需要知道)。

签到

epoch 是这一轮签到的标识,后续查询统计要带上它。

等候室

onMoveToWaitingRoom 没有数据参数,收到就意味着你已经被移出会议主房间 —— UI 要切到等候页,并停止渲染会议内容。

子会议

onAdminMoveSubMeetingUser 带了两侧的标题,可以直接拿来做 “你已被移动到「XX 组」“这种提示。

主持人对我的请求

这是请求而不是命令 —— 应当弹窗征求用户同意,同意后调 requestOpenMic() / requestOpenCamera()。SDK 不会自动开。
共享的响应方式与开麦 / 开摄像头不同。 同意主持人的共享邀请要显式带上邀请来源:
漏传后两个参数会走成”自己主动发起共享”的路径,与后端的邀请确认对不上。

音频路由与设备

外接设备由系统接管,SDK 只上报不主动切换。详见 音频路由

质量

这几个的参数类型来自 SRTC,字段说明见 SRTC 类型定义通话质量 做 UI 指示器用 onConnectionQualityChange(已做等级判定与抖动抑制), onQualityReport 是原始采样、适合上报监控。

IM

IM 类事件统一是「base + content」两段结构: content 的类型按事件不同。详见 IM

相关阅读