简介
房间管理功能提供了完整的房间生命周期管理,包括即时房间和预约房间两种模式。
RoomStore 提供了一套全面的 API 来管理房间相关操作。说明:
房间状态更新通过 state 发布者传递。订阅它以接收有关当前房间和预约房间列表的实时更新。
功能特性
即时房间:支持创建和加入即时房间。
预约房间:支持预约房间、修改预约、取消预约等操作。
房间呼叫:支持呼叫用户加入房间、接受/拒绝呼叫等操作。
状态管理:实时跟踪当前房间状态和预约房间列表。
可订阅数据
RoomState 的字段描述如下:
API 列表
函数名 | 描述 |
获取单例对象。 | |
房间事件发布者。 | |
获取预约房间列表。 | |
获取预约房间参与者。 | |
预约房间。 | |
更新预约房间。 | |
添加预约参与者。 | |
移除预约参与者。 | |
取消预约房间。 | |
创建并加入房间。 | |
加入房间。 | |
离开房间。 | |
结束房间。 | |
更新房间信息。 | |
获取房间信息。 | |
获取待处理的呼叫列表。 | |
呼叫用户加入房间。 | |
取消呼叫。 | |
接受呼叫。 | |
拒绝呼叫。 | |
开始云端录制。 | |
停止云端录制。 |
获取实例
shared
获取单例对象。
观察状态和事件
roomEventPublisher
房间事件发布者。
数据结构:RoomEvent
预约房间操作
getScheduledRoomList
获取预约房间列表。
public func getScheduledRoomList(cursor: String?, completion: ListResultCompletionClosure<RoomInfo>?) { fatalError("\\(#function) must be overridden by subclass") }
版本信息
从3.5版本开始支持。
参数说明
参数名 | 类型 | 描述 |
cursor | String? | 分页游标。 |
completion | 完成回调。 |
getScheduledAttendees
获取预约房间参与者。
public func getScheduledAttendees(roomID: String, cursor: String?, completion: ListResultCompletionClosure<RoomUser>?) { fatalError("\\(#function) must be overridden by subclass") }
版本信息
从3.5版本开始支持。
参数说明
参数名 | 类型 | 描述 |
roomID | String | 房间 ID。 |
cursor | String? | 分页游标。 |
completion | 完成回调。 |
scheduleRoom
预约房间。
public func scheduleRoom(roomID: String, options: ScheduleRoomOptions, completion: CompletionClosure?) { fatalError("\\(#function) must be overridden by subclass") }
版本信息
从3.5版本开始支持。
参数说明
参数名 | 类型 | 描述 |
roomID | String | 房间 ID。 |
options | 预约选项。 | |
completion | CompletionClosure? | 完成回调。 |
updateScheduledRoom
更新预约房间。
public func updateScheduledRoom(roomID: String, options: ScheduleRoomOptions, modifyFlag: ScheduleRoomOptions.ModifyFlag, completion: CompletionClosure?) { fatalError("\\(#function) must be overridden by subclass") }
版本信息
从3.5版本开始支持。
参数说明
参数名 | 类型 | 描述 |
roomID | String | 房间 ID。 |
options | 预约选项。 | |
modifyFlag | ScheduleRoomOptions.ModifyFlag | 修改标志。 |
completion | CompletionClosure? | 完成回调。 |
addScheduledAttendees
添加预约参与者。
public func addScheduledAttendees(roomID: String, userIDList: [String], completion: CompletionClosure?) { fatalError("\\(#function) must be overridden by subclass") }
版本信息
从3.5版本开始支持。
参数说明
参数名 | 类型 | 描述 |
roomID | String | 房间 ID。 |
userIDList | [String] | 用户 ID 列表。 |
completion | CompletionClosure? | 完成回调。 |
removeScheduledAttendees
移除预约参与者。
public func removeScheduledAttendees(roomID: String, userIDList: [String], completion: CompletionClosure?) { fatalError("\\(#function) must be overridden by subclass") }
版本信息
从3.5版本开始支持。
参数说明
参数名 | 类型 | 描述 |
roomID | String | 房间 ID。 |
userIDList | [String] | 用户 ID 列表。 |
completion | CompletionClosure? | 完成回调。 |
cancelScheduledRoom
取消预约房间。
public func cancelScheduledRoom(roomID: String, completion: CompletionClosure?) { fatalError("\\(#function) must be overridden by subclass") }
版本信息
从3.5版本开始支持。
参数说明
参数名 | 类型 | 描述 |
roomID | String | 房间 ID。 |
completion | CompletionClosure? | 完成回调。 |
即时房间操作
createAndJoinRoom
创建并加入房间。
public func createAndJoinRoom(roomID: String, roomType: RoomType, options: CreateRoomOptions, completion: CompletionClosure?) { fatalError("\\(#function) must be overridden by subclass") }
版本信息
从3.5版本开始支持。
参数说明
参数名 | 类型 | 描述 |
roomID | String | 房间 ID。 |
roomType | 房间类型(标准房间或网络研讨会)。 | |
options | 创建选项。 | |
completion | CompletionClosure? | 完成回调。 |
joinRoom
加入房间。
public func joinRoom(roomID: String, roomType: RoomType, password: String? = "", completion: CompletionClosure?) { fatalError("\\(#function) must be overridden by subclass") }
版本信息
从3.5版本开始支持。
参数说明
参数名 | 类型 | 描述 |
roomID | String | 房间 ID。 |
roomType | 房间类型(标准房间或网络研讨会)。 | |
password | String? | 房间密码。 |
completion | CompletionClosure? | 完成回调。 |
leaveRoom
离开房间。
public func leaveRoom(completion: CompletionClosure?) { fatalError("\\(#function) must be overridden by subclass") }
版本信息
从3.5版本开始支持。
参数说明
参数名 | 类型 | 描述 |
completion | CompletionClosure? | 完成回调。 |
endRoom
结束房间。
public func endRoom(completion: CompletionClosure?) { fatalError("\\(#function) must be overridden by subclass") }
版本信息
从3.5版本开始支持。
参数说明
参数名 | 类型 | 描述 |
completion | CompletionClosure? | 完成回调。 |
updateRoomInfo
更新房间信息。
public func updateRoomInfo(roomID: String, options: UpdateRoomOptions, modifyFlag: UpdateRoomOptions.ModifyFlag, completion: CompletionClosure?) { fatalError("\\(#function) must be overridden by subclass") }
版本信息
从3.5版本开始支持。
参数说明
参数名 | 类型 | 描述 |
roomID | String | 房间 ID。 |
options | 更新选项。 | |
modifyFlag | UpdateRoomOptions.ModifyFlag | 修改标志。 |
completion | CompletionClosure? | 完成回调。 |
getRoomInfo
获取房间信息。
public func getRoomInfo(roomID: String, completion: GetRoomInfoCompletionClosure?) { fatalError("\\(#function) must be overridden by subclass") }
版本信息
从3.5版本开始支持。
参数说明
参数名 | 类型 | 描述 |
roomID | String | 房间 ID。 |
completion | GetRoomInfoCompletionClosure? | 完成回调。 |
房间呼叫操作
getPendingCalls
获取待处理的呼叫列表。
public func getPendingCalls(roomID: String, cursor: String?, completion: ListResultCompletionClosure<RoomCall>?) { fatalError("\\(#function) must be overridden by subclass") }
版本信息
从3.5版本开始支持。
参数说明
参数名 | 类型 | 描述 |
roomID | String | 房间 ID。 |
cursor | String? | 分页游标。 |
completion | 完成回调。 |
callUserToRoom
呼叫用户加入房间。
public func callUserToRoom(roomID: String, userIDList: [String], timeout: Int = 0, extensionInfo: String?, completion: CallUserToRoomCompletionClosure?) { fatalError("\\(#function) must be overridden by subclass") }
版本信息
从3.5版本开始支持。
参数说明
参数名 | 类型 | 描述 |
roomID | String | 房间 ID。 |
userIDList | [String] | 用户 ID 列表。 |
timeout | Int | 超时时间(单位:秒)。 |
extensionInfo | String? | 扩展信息。 |
completion | CallUserToRoomCompletionClosure? | 完成回调。 |
cancelCall
取消呼叫。
public func cancelCall(roomID: String, userIDList: [String], completion: CompletionClosure?) { fatalError("\\(#function) must be overridden by subclass") }
版本信息
从3.5版本开始支持。
参数说明
参数名 | 类型 | 描述 |
roomID | String | 房间 ID。 |
userIDList | [String] | 用户 ID 列表。 |
completion | CompletionClosure? | 完成回调。 |
acceptCall
接受呼叫。
public func acceptCall(roomID: String, completion: CompletionClosure?) { fatalError("\\(#function) must be overridden by subclass") }
版本信息
从3.5版本开始支持。
参数说明
参数名 | 类型 | 描述 |
roomID | String | 房间 ID。 |
completion | CompletionClosure? | 完成回调。 |
rejectCall
拒绝呼叫。
public func rejectCall(roomID: String, reason: CallRejectionReason, completion: CompletionClosure?) { fatalError("\\(#function) must be overridden by subclass") }
版本信息
从3.5版本开始支持。
参数说明
参数名 | 类型 | 描述 |
roomID | String | 房间 ID。 |
reason | 拒绝原因。 | |
completion | CompletionClosure? | 完成回调。 |
录制操作
startRecording
开始云端录制。
public func startRecording(options: StartRecordingOptions = .init(), completion: CompletionClosure?) { fatalError("\\(#function) must be overridden by subclass") }
仅 Owner 和 Admin 有权限调用。
版本信息
从3.5版本开始支持。
参数说明
参数名 | 类型 | 描述 |
options | 录制选项,预留扩展。 | |
completion | CompletionClosure? | 完成回调。 |
stopRecording
停止云端录制。
public func stopRecording(completion: CompletionClosure?) { fatalError("\\(#function) must be overridden by subclass") }
仅 Owner 和 Admin 有权限调用。
版本信息
从3.5版本开始支持。
参数说明
参数名 | 类型 | 描述 |
completion | CompletionClosure? | 完成回调。 |
数据结构
RoomType
房间类型。
枚举值 | 值 | 说明 |
standard | 1 | 标准房间。 |
webinar | 2 | 网络研讨会。 |
RoomStatus
房间状态。
枚举值 | 值 | 说明 |
scheduled | 1 | 已预约。 |
running | 2 | 进行中。 |
RoomCallStatus
房间呼叫状态。
枚举值 | 值 | 说明 |
none | 0 | 无呼叫。 |
calling | 1 | 呼叫中。 |
timeout | 2 | 呼叫超时。 |
rejected | 3 | 呼叫被拒绝。 |
RoomCallResult
呼叫用户加入房间的结果。
枚举值 | 值 | 说明 |
success | 0 | 呼叫成功。 |
alreadyInCalling | 1 | 用户已在呼叫中。 |
alreadyInRoom | 2 | 用户已在房间中。 |
CallRejectionReason
呼叫拒绝原因。
枚举值 | 值 | 说明 |
rejected | 0 | 用户主动拒绝。 |
inOtherRoom | 1 | 用户在其他房间中。 |
RecordingStatus
录制状态。
枚举值 | 值 | 说明 |
none | 0 | 未录制。 |
recording | 1 | 录制中。 |
RecordingStopReason
录制停止原因。
枚举值 | 值 | 说明 |
stoppedByUser | 0 | 用户主动停止。 |
roomDismissed | 1 | 房间已解散。 |
maxDurationReached | 2 | 已达到最大录制时长。 |
storageLimitReached | 3 | 已达到存储空间上限。 |
RecordingError
录制相关错误码。
枚举值 | 值 | 说明 |
noError | 0 | 操作成功。 |
noPermission | 1 | 调用者不是 Owner / Admin。 |
featureNotEnabled | 2 | 控制台未开启云端录制功能。 |
storageNotConfigured | 3 | 未配置录制存储(COS / VOD)。 |
serviceUnavailable | 4 | RoomKit / TRTC 录制服务暂时不可用。 |
unknownError | 5 | 未知错误。 |
RoomEvent
房间事件回调。
枚举值 | 说明 |
onAddedToScheduledRoom | 当被添加到预约房间时触发此回调。 |
onRemovedFromScheduledRoom | 当被从预约房间移除时触发此回调。 |
onScheduledRoomCancelled | 当预约房间被取消时触发此回调。 |
onScheduledRoomStartingSoon | 当预约房间即将开始时触发此回调。 |
onRoomEnded | 当房间结束时触发此回调。 |
onCallReceived | 当收到房间呼叫时触发此回调。 |
onCallCancelled | 当房间呼叫被取消时触发此回调。 |
onCallTimeout | 当房间呼叫超时时触发此回调。 |
onCallAccepted | 当房间呼叫被接受时触发此回调。 |
onCallRejected | 当房间呼叫被拒绝时触发此回调。 |
onCallHandledByOtherDevice | 当房间呼叫被其他设备处理时触发此回调。 |
onCallRevokedByAdmin | 当房间呼叫被管理员撤销时触发此回调。 |
onRecordingStarted | 当录制开始时触发此回调。 |
onRecordingStopped | 当录制停止时触发此回调。 |
RoomUser
房间用户信息。
属性 | 类型 | 说明 |
userID | String | 用户 ID。 |
userName | String | 用户名称。 |
avatarURL | String | 用户头像 URL。 |
RecordingInfo
录制信息。
属性 | 类型 | 说明 |
status | 录制状态。 | |
operatorUser | 开始录制的用户。 | |
startTime | Int | 录制开始时间戳。 |
RoomInfo
房间信息。
属性 | 类型 | 说明 |
roomID | String | 房间 ID。 |
roomName | String | 房间名称。 |
roomOwner | 房间所有者。 | |
roomType | 房间类型。 | |
participantCount | Int | 参与者数量。 |
audienceCount | Int | 观众数量(适用于网络研讨会模式)。 |
createTime | Int | 创建时间。 |
roomStatus | 房间状态。 | |
scheduledStartTime | Int | 预约开始时间。 |
scheduledEndTime | Int | 预约结束时间。 |
startReminderInSeconds | Int | 开始前提醒秒数。 |
scheduleAttendees | 预约参与者列表。 | |
password | String? | 房间密码。 |
isAllMicrophoneDisabled | Bool | 是否禁用所有麦克风。 |
isAllCameraDisabled | Bool | 是否禁用所有摄像头。 |
isAllMessageDisabled | Bool | 是否禁用所有消息。 |
isAllScreenShareDisabled | Bool | 是否禁用所有屏幕共享。 |
recordingInfo | 录制信息。 |
ScheduleRoomOptions
预约房间选项。
属性 | 类型 | 说明 |
roomName | String | 房间名称。 |
password | String | 房间密码。 |
scheduleStartTime | Int | 预约开始时间。 |
scheduleEndTime | Int | 预约结束时间。 |
reminderSecondsBeforeStart | Int | 开始前提醒秒数。 |
scheduleAttendees | [String] | 预约参与者 ID 列表。 |
isAllMicrophoneDisabled | Bool | 是否禁用所有麦克风。 |
isAllCameraDisabled | Bool | 是否禁用所有摄像头。 |
isAllScreenShareDisabled | Bool | 是否禁用所有屏幕共享。 |
isAllMessageDisabled | Bool | 是否禁用所有消息。 |
CreateRoomOptions
创建房间选项。
属性 | 类型 | 说明 |
roomName | String | 房间名称。 |
password | String | 房间密码。 |
isAllMicrophoneDisabled | Bool | 是否禁用所有麦克风。 |
isAllCameraDisabled | Bool | 是否禁用所有摄像头。 |
isAllScreenShareDisabled | Bool | 是否禁用所有屏幕共享。 |
isAllMessageDisabled | Bool | 是否禁用所有消息。 |
UpdateRoomOptions
更新房间选项。
属性 | 类型 | 说明 |
roomName | String | 房间名称。 |
password | String | 房间密码。 |
StartRecordingOptions
开始录制选项。
RoomCall
房间呼叫信息。
属性 | 类型 | 说明 |
caller | 呼叫者信息。 | |
callee | 被呼叫者信息。 | |
status | 呼叫状态。 |
RoomState
RoomStore 对外提供的房间相关状态数据。
CallUserToRoomCompletionHandler
呼叫用户加入房间完成回调。
方法
onSuccess: 成功回调。
fun onSuccess(result: Map<String, RoomCallResult>)
参数名 | 类型 | 说明 |
result | 呼叫结果映射。 |
onFailure: 失败回调。
fun onFailure(code: Int, desc: String)
参数名 | 类型 | 说明 |
code | Int | 错误码。 |
desc | String | 错误描述。 |
GetRoomInfoCompletionHandler
获取房间信息完成回调。
方法
onSuccess: 成功回调。
fun onSuccess(roomInfo: RoomInfo)
参数名 | 类型 | 说明 |
roomInfo | 房间信息。 |
onFailure: 失败回调。
fun onFailure(code: Int, desc: String)
参数名 | 类型 | 说明 |
code | Int | 错误码。 |
desc | String | 错误描述。 |