Seat Management

功能介绍

麦位管理是一种实时互动交流方式,主播可以麦位上的观众进行实时互动,无论是解答问题、分享经验还是进行娱乐互动,都能极大地提升观众的参与感满意度。这种直接的互动和交流为商业化运营提供了更加便捷和高效的渠道,使用此功能,可以实现申请上麦,邀请上麦,移动麦位,踢人下麦,锁定麦位能功能,极大的丰富了语音聊天室的可玩性。
麦位列表
观众申请上麦
主播处理上麦










接入流程

观众申请上麦流程

TUILiveKit 观众申请上麦功能 主要是通过 SeatGridView 实现,您可以调用如下 API 函数,实现观众申请上麦功能。以观众 B 申请上麦为例实现如下。

观众发送申请上麦请求

观众 B 给主播 A 发送申请上麦请求,主播 A 会在 onSeatRequestReceived 回调中收到观众 B 的上麦请求。
swift
let seatIndex = 1
let timeout = 60
seatGridView.takeSeat(index: index, timeout: timeout) { userInfo in
print("申请上麦被同意")
} onRejected: { userInfo in
print("申请上麦被拒绝")
} onCancelled: { userInfo in
print("申请上麦被取消")
} onTimeout: { userInfo in
print("申请上麦超时")
} onError: { userInfo, code, message in
print("申请上麦错误")
}
TUILiveKit 观众申请上麦功能 主要是通过 SeatGridView 实现,您可以调用如下 API 函数,实现观众申请上麦功能。以观众 B 申请上麦为例实现如下。
注意:
只有当房间模式是 applyToTake (申请上麦),房主才会收到上麦请求,freeToTake(自由上麦) 模式下,takeSeat会直接上麦成功。

主播端收到申请上麦请求

主播 A 会在 onSeatRequestReceived 回调方法中收到 观众B 的上麦请求。
swift
func onSeatRequestReceived(type: SGRequestType, userInfo: TUIUserInfo) {
if type == .applyToTakeSeat {
print("收到观众申请上麦请求:\(userInfo.userId)")
}
}
注意:
只有当房间模式是 applyToTake (申请上麦),房主才会收到上麦请求,freeToTake (自由上麦) 模式下,takeSeat会直接上麦成功。

主播响应上麦请求

主播 A 收到观众的上麦请求后,可以调用 responseRemoteRequest 响应观众 B 是否同意上麦, 观众B会收到主播A同意和拒绝(onAccepted/onRejected)的回调。
swift
// 主播同意观众上麦
seatGridView.responseRemoteRequest(userId, true) {
} onError: { code, message in
}

// 主播拒绝观众上麦
seatGridView.responseRemoteRequest(userId, false) {
} onError: { code, message in
}

麦位信息发生变化的回调

如果您已经设置过 自定义麦位视图, 可以监听updateSeatView回调来刷新自己的自定义UI。
swift
func seatGridView(_ view: SeatGridView, updateSeatView seatInfo: TUISeatInfo, seatView: UIView) {
print("麦位信息发生变化")
}

主播邀请观众上麦流程

主播发送邀请上麦请求

主播 A 给观众 C 发送邀请上麦请求,观众 C 会在 onSeatRequestReceived 回调中收到主播 A 的邀请上麦请求。
swift
let seatIndex = 1
let userId = "userIdC"

seatGridView.takeUserOnSeatByAdmin(index: seatIndex, timeout: timeout, userId: userId) { userInfo in
print("邀请上麦被同意")
} onRejected: { userInfo in
print("邀请上麦被拒绝")
} onCancelled: { userInfo in
print("邀请上麦被取消")
} onTimeout: { userInfo in
print("邀请上麦超时")
} onError: { userInfo, code, message in
print("邀请上麦错误")
}

观众端收到邀请上麦请求

观众 C 会在 onSeatRequestReceived 回调方法中收到主播 A 的邀请上麦请求。
swift
func onSeatRequestReceived(type: SGRequestType, userInfo: TUIUserInfo) {
if type == .inviteToTakeSeat {
print("收到主播邀请上麦请求:\(userInfo.userId)")
}
}

观众响应邀请上麦请求

观众 C 收到观众的上麦请求后,可以调用 responseRemoteRequest 响应主播 A 是否同意上麦, 主播 A 会收到观众 C 同意和拒绝(onAccepted/onRejected)的回调。
swift
// 观众同意主播邀请
seatGridView.responseRemoteRequest("userId of anchor", true) {
} onError: { code, message in
}

// 观众拒绝主播邀请
seatGridView.responseRemoteRequest("userId of anchor", false, null) {
} onError: { code, message in
}
说明:
如果自定义麦位视图,主播和观众都可以通过监听 麦位信息发生变化的回调 刷新麦位UI。

下麦流程

观众上麦成功后,主动下麦

观众 B 上麦成功后,观众 B 主动下麦可以调用 leaveSeat。
swift
seatGridView.leaveSeat() {
} onError: { code, message in
}

观众上麦成功后,主播踢观众下麦

观众 B 上麦成功后,主播 A 踢观众 B 下麦。
swift
userId = "userIdB"
seatGridView.kickUserOffSeatByAdmin(userId) {
} onError: { code, message in
}

观众收到被主播踢下麦的回调

主播 A 踢观众 B 下麦后,观众 B 会收到 onKickedOffSeat 回调。
swift
func onKickedOffSeat(userInfo: TUIUserInfo) {
print("主播踢下麦")
}

说明:
如果自定义麦位视图,主播和观众都可以通过监听 麦位信息发生变化的回调 刷新麦位UI。

锁麦流程

位置锁定

主播可将某个麦位进行锁定,此麦位就会被封禁,此麦位就无法进行上下麦操作。
swift
let index = 1
let isLockSeat = true

let params = TUISeatLockParams()
params.lockSeat = isLockSeat

seatGridView.lockSeat(index: index, lockMode: params) {
} onError: { code, message in
}

音频锁定

主播可将某个麦位进行音频锁定,此麦位上的用户就会被静音。
swift
let index = 1
let isAudioLocked = true

let params = TUISeatLockParams()
params.lockAudio = isAudioLocked

seatGridView.lockSeat(index: index, lockMode: params) {
} onError: { code, message in
}
说明:
如果自定义麦位视图,主播和观众都可以通过监听 麦位信息发生变化的回调 刷新麦位UI。

其它麦位管理功能扩展

麦位管理功能是基于 SeatGridView 实现,若您需要扩展麦位管理功能,可参见 SeatGridView 文档。