LiveSeatStore
简介
LiveSeatStore 提供了一套完整的麦位管理 API,包括上麦、下麦、锁麦、解锁麦位、踢用户下麦、远程控制设备等功能。
通过该类,可以在直播间内实现麦位管理功能。
重要:
使用 create(liveID:) 工厂方法创建 LiveSeatStore 实例,需要传入有效的直播间 ID。
说明:
麦位状态更新通过 state 发布者传递。订阅它以接收房间内麦位数据的实时更新。
功能特性
麦位管理:上麦、下麦、锁麦、解锁麦位等操作。
用户管理:踢用户下麦、移动用户到指定麦位。
设备控制:远程控制用户的摄像头和麦克风。
事件监听:监听麦位相关事件。
可订阅数据
LiveSeatState 的字段描述如下:
属性名 | 类型 | 描述 |
seatList | 麦位列表。 | |
canvas | 画布信息。 | |
speakingUsers | [String: Int] | 正在说话的用户。 |
avStatistics | 音视频相关统计信息。 |
API 列表
函数名 | 描述 |
创建麦位管理实例。 | |
麦位事件发布者。 | |
上麦。 | |
下麦。 | |
锁麦。 | |
解锁麦位。 | |
踢用户下麦。 | |
移动用户。 | |
开启远程摄像头。 | |
关闭远程摄像头。 | |
开启远程麦克风。 | |
关闭远程麦克风。 |
创建实例
create
创建 LiveSeatStore 实例
public static func create(liveID: String) -> LiveSeatStore {let store: LiveSeatStoreImpl = StoreFactory.shared.getStore(liveId: liveID)return store}
版本信息
从 3.5 版本开始支持。
参数说明
参数名 | 类型 | 是否必填 | 描述 |
liveID | String | 必填 | 直播间ID。 |
观察状态和事件
liveSeatEventPublisher
麦位事件发布者
麦位操作
takeSeat
上麦
public func takeSeat(seatIndex: Int,completion: CompletionClosure?){fatalError("\(#function) must be overridden by subclass")}
版本信息
从 3.5 版本开始支持。
参数说明
参数名 | 类型 | 是否必填 | 描述 |
seatIndex | Int | 必填 | 麦位索引。 |
completion | 必填 | 完成回调。 |
leaveSeat
下麦
public func leaveSeat(completion: CompletionClosure? = nil) {fatalError("\(#function) must be overridden by subclass")}
版本信息
从 3.5 版本开始支持。
参数说明
参数名 | 类型 | 是否必填 | 描述 |
completion | 必填 | 完成回调。 |
lockSeat
锁定麦位
public func lockSeat(seatIndex: Int,completion: CompletionClosure?) {fatalError("\(#function) must be overridden by subclass")}
版本信息
从 3.5 版本开始支持。
参数说明
参数名 | 类型 | 是否必填 | 描述 |
seatIndex | Int | 必填 | 麦位索引。 |
completion | 必填 | 完成回调。 |
unlockSeat
解锁麦位
public func unlockSeat(seatIndex: Int,completion: CompletionClosure?) {fatalError("\(#function) must be overridden by subclass")}
版本信息
从 3.5 版本开始支持。
参数说明
参数名 | 类型 | 是否必填 | 描述 |
seatIndex | Int | 必填 | 麦位索引。 |
completion | 必填 | 完成回调。 |
用户管理
kickUserOutOfSeat
踢用户下麦
public func kickUserOutOfSeat(userID: String,completion: CompletionClosure?){fatalError("\(#function) must be overridden by subclass")}
版本信息
从 3.5 版本开始支持。
参数说明
参数名 | 类型 | 是否必填 | 描述 |
userID | String | 必填 | 用户 ID。 |
completion | 必填 | 完成回调。 |
moveUserToSeat
移动用户到麦位
public func moveUserToSeat(userID: String,targetIndex: Int,policy: MoveSeatPolicy?,completion: CompletionClosure?) {fatalError("\(#function) must be overridden by subclass")}
版本信息
从 3.5 版本开始支持。
参数说明
参数名 | 类型 | 是否必填 | 描述 |
userID | String | 必填 | 用户 ID。 |
targetIndex | Int | 必填 | 目标麦位索引。 |
policy | 必填 | 移动策略。 | |
completion | 必填 | 完成回调。 |
远程设备控制
openRemoteCamera
开启远程摄像头
public func openRemoteCamera(userID: String,policy: DeviceControlPolicy,completion: CompletionClosure?) {fatalError("\(#function) must be overridden by subclass")}
版本信息
从 3.5 版本开始支持。
参数说明
参数名 | 类型 | 是否必填 | 描述 |
userID | String | 必填 | 用户 ID。 |
policy | 必填 | 设备控制策略。 | |
completion | 必填 | 完成回调。 |
closeRemoteCamera
关闭远程摄像头
public func closeRemoteCamera(userID: String,completion: CompletionClosure?) {fatalError("\(#function) must be overridden by subclass")}
版本信息
从 3.5 版本开始支持。
参数说明
参数名 | 类型 | 是否必填 | 描述 |
userID | String | 必填 | 用户 ID。 |
completion | 必填 | 完成回调。 |
openRemoteMicrophone
开启远程麦克风
public func openRemoteMicrophone(userID: String,policy: DeviceControlPolicy,completion: CompletionClosure?) {fatalError("\(#function) must be overridden by subclass")}
版本信息
从 3.5 版本开始支持。
参数说明
参数名 | 类型 | 是否必填 | 描述 |
userID | String | 必填 | 用户 ID。 |
policy | 必填 | 设备控制策略。 | |
completion | 必填 | 完成回调。 |
closeRemoteMicrophone
关闭远程麦克风
public func closeRemoteMicrophone(userID: String,completion: CompletionClosure?) {fatalError("\(#function) must be overridden by subclass")}
版本信息
从 3.5 版本开始支持。
参数说明
参数名 | 类型 | 是否必填 | 描述 |
userID | String | 必填 | 用户 ID。 |
completion | 必填 | 完成回调。 |
数据结构
MoveSeatPolicy
移动麦位策略。
枚举值 | 说明 |
abortWhenOccupied | 被占用时中止。 |
forceReplace | 强制替换。 |
swapPosition | 交换位置。 |
DeviceControlPolicy
设备控制策略。
枚举值 | 说明 |
unlockOnly | 仅解锁。 |
SuspendStatus
用户的挂起状态。
枚举值 | 说明 |
none | 未挂起。 |
inBackground | 用户进入后台挂起。 |
inCalling | 用户正在接听电话。 |
LiveSeatEvent
麦位相关的回调事件。
枚举值 | 说明 |
onLocalCameraOpenedByAdmin | 当本地摄像头被管理员开启时触发此回调。 |
onLocalCameraClosedByAdmin | 当本地摄像头被管理员关闭时触发此回调。 |
onLocalMicrophoneOpenedByAdmin | 当本地麦克风被管理员开启时触发此回调。 |
onLocalMicrophoneClosedByAdmin | 当本地麦克风被管理员关闭时触发此回调。 |
SeatUserInfo
麦位用户信息。
属性 | 类型 | 说明 |
userID | String | 用户 ID。 |
userName | String | 用户名。 |
avatarURL | String | 头像URL。 |
role | 用户角色。 | |
liveID | String | 直播间ID。 |
microphoneStatus | 麦克风状态。 | |
allowOpenMicrophone | Bool | 是否允许开启麦克风。 |
cameraStatus | 摄像头状态。 | |
allowOpenCamera | Bool | 是否允许开启摄像头。 |
userSuspendStatus | 用户挂起状态。 |
RegionInfo
麦位视图坐标信息。
属性 | 类型 | 说明 |
x | CGFloat | X坐标。 |
y | CGFloat | Y坐标。 |
w | CGFloat | 宽度。 |
h | CGFloat | 高度。 |
zorder | Int | 层级顺序。 |
AVStatistics
音视频相关统计信息。
属性 | 类型 | 说明 |
userID | String | 用户 ID。 |
videoBitrate | UInt | 本地视频的码率。 |
videoWidth | CGFloat | 本地视频的宽度。 |
videoHeight | CGFloat | 本地视频的高度。 |
frameRate | UInt | 本地视频的帧率。 |
audioSampleRate | UInt | 音频的采样率。 |
audioBitrate | UInt | 音频码率。 |
SeatInfo
麦位信息。
属性 | 类型 | 说明 |
index | Int | 麦位索引。 |
isLocked | Bool | 是否锁定。 |
userInfo | 用户信息。 | |
region | 区域信息。 |
LiveCanvas
直播画布。
属性 | 类型 | 说明 |
w | CGFloat | 宽度。 |
h | CGFloat | 高度。 |
templateID | UInt | 模板ID。 |
LiveSeatState
LiveSeatStore 对外提供的麦位状态数据。
属性 | 类型 | 说明 |
seatList | 麦位列表。 | |
canvas | 画布信息。 | |
speakingUsers | [String: Int] | 正在说话的用户。 |
avStatistics | 音视频相关统计信息。 |