> ## Documentation Index
> Fetch the complete documentation index at: https://docs.stmlink.com/llms.txt
> Use this file to discover all available pages before exploring further.

> ## Agent Instructions
> 服务端接口只有 `/server/v1/...` 这一套对外开放，需用 app_id + app_key 做 HMAC-SHA256 签名，只能从业务方自己的后端调用。文档中若出现其它前缀的接口，均为内部接口，不要建议客户调用。
> app_key 是服务端密钥，绝不能出现在客户端代码、前端配置或移动 App 里。客户端加入频道用的 token 必须由业务方后端调用 `/server/v1/channel/grant` 签发后下发。
> SRTC 与 SMeeting 是上下两层不同的产品，术语不通用：SRTC 是音视频底座，说「频道 channel」「加入 / 退出」；SMeeting 建在 SRTC 之上，说「房间 room」「会议 meeting」「进入 / 退出」。回答时按用户所在的层用对应术语，不要把「房间」「会议」安到 SRTC 的接口上。
> 同一能力在各端 SDK 里的包名、类名、方法名并不相同。写示例代码时请使用文档中该端自己的 API，不要把一个端的写法套到另一个端上。

# 等候室

> SMeeting Swift SDK 的等候室开关、候场成员管理与相关事件

### 概述

等候室让成员进入会议前先在候场区等待，由主持人逐个放行。

* 是否启用读 `RoomInfo.waitingRoomDisabled`（`true` 表示**关闭**等候室）
* 创建会议时可以通过 `MeetingCreateReq.waitingRoomDisabled` 预设
* 会中由主持人 / 联席主持人调整

***

### 开关等候室

```swift theme={null}
// 关闭等候室（成员直接进入会议）
try await meeting.adminUpdateWaitingRoomDisabled(true)

// 启用等候室
try await meeting.adminUpdateWaitingRoomDisabled(false)
```

状态变化时所有成员收到：

```swift theme={null}
func meeting(_ meeting: SMeeting, waitingRoomDisabledDidChange data: AdminUpdateWaitingRoomDisabledEventData) {
    // data.waitingRoomDisabled、data.opUid
}
```

***

### 查看候场成员

```swift theme={null}
let users = try await meeting.adminWaitingRoomUsers()
```

返回 `[WaitingRoomUserInfo]`，含 `userId`、`name`、`avatar`、`at`（进入等候室时间）。

有人进出等候室时会有事件通知，主持人可以据此增量刷新列表：

```swift theme={null}
func meeting(_ meeting: SMeeting, userDidEnterWaitingRoom data: UserEnterWaitingRoomEventData) {
    // data.uid、data.name、data.avatar
}

func meeting(_ meeting: SMeeting, userDidExitWaitingRoom data: UserExitWaitingRoomEventData) {
    // data.uid、data.name、data.avatar
}
```

***

### 放行与移入

```swift theme={null}
// 从等候室放进会议
try await meeting.adminMoveOutWaitingRoom(userId: uid, nickname: name)

// 全部放行：两个参数都不传
try await meeting.adminMoveOutWaitingRoom()

// 把会议中的成员移回等候室
try await meeting.adminMoveInWaitingRoom(userId: uid, nickname: name)
```

被移回等候室的成员会收到：

```swift theme={null}
func meetingDidMoveToWaitingRoom(_ meeting: SMeeting) {
    // 切换到等候界面
}
```

***

### 成员主动离开等候室

在等候室里的成员如果不想继续等待：

```swift theme={null}
try await meeting.exitWaitingRoom(roomNo: roomNo)
```

`meetingId` 与 `roomNo` 二选一填写。这个接口只需要登录，不要求在会议中。

***

### 相关页面

* [主持人管控](/zh/meeting/swift/advanced/host-controls)
* [事件参考](/zh/meeting/swift/events)
