Skip to main content
会控接口全部要求 Role.hostRole.coHost,否则抛 unauthorized208004)。
按角色隐藏 / 禁用按钮,不要靠捕获 unauthorized 当前角色从 meeting.getUserInfo(myUid).role 读,变化监听 onUserRoleChange

房间开关都是「两个字段一组」

麦克风与摄像头这两组最容易写错:
第一个参数是 selfUnmuteMicDisabled(能不能自己解除),第二个才是 micDisabled(是否静音)。参数顺序反直觉,很容易记错。摄像头的 adminUpdateRoomCameraState 同理。
读状态时也要两个一起看:

其余单开关

变化通过对应的 onRoom*Change 事件广播给所有人,事件里带 opUid(谁操作的)。
锁定会议(locked)后新成员无法加入,但已在会中的不受影响。 被拒绝的成员收到的是 onRoomJoinFailed(不是抛错),所以入会失败处理要 同时写 try/catch 与那个事件。

对成员的操作

「请求开」与「直接关」不对称

这是有意的隐私边界:主持人可以关别人的麦克风和摄像头,但不能替别人打开。 成员侧收到请求应当弹窗,同意后调 requestOpenMic(preset, true, adminUid)
强制停止当前共享(不指定 uid,停的是正在共享的那个人):

移交主持人

调用后你自己变成普通成员,所有会控按钮应当立即失效。 不要假设调用成功后还能继续会控 —— 监听 onUserRoleChange 更新 UI。

一个最小的会控面板

进会后先读一次 getRoomInfo() 初始化 UI,之后靠事件增量更新。 只依赖事件会导致进会瞬间的状态是空的。
isHost 的判断:

相关阅读