SMeetingDelegate,注册在引擎上:
所有回调的第一个参数都是引擎实例
meeting,第二个参数是该事件的数据对象。
下面的表格省略第一个参数。两个例外:onUserEnter 的第二个参数直接是 MeetingUserInfo,
onDeviceAdd / onDeviceRemove 的第二个参数直接是 DeviceInfo。连接状态
onReconnecting / onReconnected 之间 SDK 会自行恢复,业务侧只需更新连接指示。
收到 onDisconnected 才走”退出会议”流程。
成员
带
byAdmin 与 opUid? 的事件表示”是谁操作的”:byAdmin 为 true 时
opUid 是操作者。UI 上提示”你已被主持人静音”就靠这两个字段。成员媒体状态
拿到
onUserCameraStateChange 且 cameraState === CameraState.on 时才去
subscribeRemoteVideoTrack(uid),关掉时退订 —— 这是控制带宽的主要手段。
举手
HandupType 区分举手的用途:mic / camera / chat / share;
UserHandupStep 是流转步骤:request / cancel / confirmOpen / rejectOpen。
详见举手。
房间级会控
这一组都是主持人改了全局开关。字段形如xxxDisabled: boolean + opUid?。
micDisabled 与 selfUnmuteMicDisabled 是两件事:micDisabled—— 现在是不是全体静音状态selfUnmuteMicDisabled—— 成员能不能自己解除静音
共享
ShareType 有 screen 与 whiteBoard 两种。
消息
ChatMsgType:text / file / pic / sound。isPrivate 为 true 表示私聊。
action 是原始广播名(1.4.0 起):成员消息为 user_send_room_chat_message,主持人后台下发的系统消息为 admin_send_room_chat_message,后者 isSystem 为 true。
msg 统一是字符串 —— 结构化内容(文件、图片元信息)需要自己 JSON.parse。
录制与点名
McuTaskStatus 为 exception 时 errDesc 有原因,UI 上要提示(录制出问题用户需要知道)。
自 1.1.0 起,服务端下发本版本 SDK 不认识的 task_type / task_status 时事件照常回调,枚举落到 unknown,
服务端原始值在 taskTypeRaw / taskStatusRaw(1.0.0 及以前会整条丢弃、收不到回调)。事件里缺 task_status 时按 0(waitStart)处理。
switch (data.taskStatus) 请带上 default 分支;McuTaskStatus 各取值见类型定义。
签到
epoch 是这一轮签到的标识,后续查询统计要带上它。
等候室
onMoveToWaitingRoom 没有数据参数,收到就意味着你已经被移出会议主房间 ——
UI 要切到等候页,并停止渲染会议内容。子会议
onAdminMoveSubMeetingUser 带了两侧的标题,可以直接拿来做
“你已被移动到「XX 组」“这种提示。
主持人对我的请求
这是请求而不是命令 —— 应当弹窗征求用户同意,同意后调
requestOpenMic() / requestOpenCamera()。SDK 不会自动开。音频路由与设备
外接设备由系统接管,SDK 只上报不主动切换。详见
音频路由。
质量
这几个的参数类型来自 SRTC,字段说明见
SRTC 类型定义与通话质量。
做 UI 指示器用
onConnectionQualityChange(已做等级判定与抖动抑制),
onQualityReport 是原始采样、适合上报监控。
onReceiveStreamStatusChange(1.3.0 起,透传 SRTC 1.2.0 的同名事件)按轨道判定,用来开关某一格画面上的「加载中」指示:订阅后首帧到达会先收到一次 timedOut = false,之后约 3 秒收不到帧报超时、恢复再报一次。只报跳变,初始状态按 SRTC RemoteVideoTrack.isReceiveTimedOut 现判。不要用 onConnectionQualityChange 代替——那是整条链路的档位,不是这一路画面的卡顿。
IM
IM 类事件统一是「
base + content」两段结构:
content 的类型按事件不同。详见 IM。