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
音视频相关统计信息。