tencent cloud

文档反馈

麦位管理

最后更新时间:2024-12-24 17:50:31
    本文档主要介绍 SeatGridView 的麦位管理能力。
    SeatGridView 支持如下麦位管理能力:

    前提条件

    在使用 SeatGridView 前,您需要先 集成与登录 SeatGridView ,以便后续功能正常使用。

    使用指引

    步骤1:将 SeatGridView 添加到视图上

    您需要先导入 SeatGridView 模块,然后创建一个 SeatGridView 视图对象,并将其添加到自己的视图上。
    iOS
    Android
    import UIKit
    import RTCRoomEngine
    import SeatGridView
    
    class SeatManagementController: UIViewController {
    private let seatGridView: SeatGridView = {
    let view = SeatGridView()
    return view
    }()
    override func viewDidLoad() {
    super.viewDidLoad()
    seatGridView.addObserver(observer: self)
    // 将 seatGridView 添加到视图上,同时设置好布局约束
    }
    deinit {
    seatGridView.removeObserver(observer: self)
    }
    }
    import com.trtc.uikit.livekit.seatGridView.SeatGridView;
    
    public class SeatManagementActivity extends AppCompatActivity {
    @Override
    protected void onCreate(@Nullable Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    SeatGridView seatGridView = new SeatGridView(this);
    addContentView(seatGridView,
    new ViewGroup.LayoutParams(ViewGroup.LayoutParams.MATCH_PARENT, ViewGroup.LayoutParams.MATCH_PARENT));
    
    }
    }

    步骤2:管理麦位

    说明:
    使用麦位管理时,您需要确保您已经开播或进入到了直播间。

    申请上麦

    申请上麦的行为与上麦模式相关。
    当直播间的上麦模式为“申请上麦模式(applyToTake)”时,申请上麦需要等待房主同意才可上麦。
    当直播间的上麦模式为“自由上麦模式(freeToTake)”时,申请上麦无需等待房主同意,可直接上麦。
    当您想要上麦时,调用 takeSeat 接口,传入两个参数: 麦位索引和超时时长。
    iOS
    Android
    let index = 1 // 请将这里替换成您想要申请的麦位号
    let timeout = 30 // 请将这里替换成您申请上麦的超时时间,单位秒,如果设置为 0,SDK 不会做超时检测,也不会触发超时回调
    self.seatGridView.takeSeat(index: index, timeout: timeout) { userInfo in
    // 上麦申请被接受
    } onRejected: { userInfo in
    // 上麦申请被拒绝
    } onCancelled: { userInfo in
    // 上麦申请被取消
    } onTimeout: { userInfo in
    // 上麦申请已超时
    } onError: { userInfo, code, message in
    // 上麦异常
    }
    int index = 1; // 请将这里替换成您想要申请的麦位号
    int timeout = 30; // 请将这里替换成您申请上麦的超时时间,单位秒,如果设置为 0,SDK 不会做超时检测,也不会触发超时回调
    seatGridView.takeSeat(index, timeout, new TUIRoomDefine.RequestCallback() {
    @Override
    public void onAccepted(String requestId, String userId) {
    // 上麦申请被接受
    }
    
    @Override
    public void onRejected(String requestId, String userId, String message) {
    // 上麦申请被拒绝
    }
    
    @Override
    public void onCancelled(String requestId, String userId) {
    // 上麦申请被取消
    }
    
    @Override
    public void onTimeout(String requestId, String userId) {
    // 上麦申请已超时
    }
    
    @Override
    public void onError(String requestId, String userId, TUICommonDefine.Error error, String message) {
    // 上麦异常
    }
    });
    当您是房主时,有人申请上麦时,您会收到 onSeatRequestReceived 回调,您可通过调用 responseRemoteRequest 同意/拒绝对方的上麦申请。
    iOS
    Android
    func onSeatRequestReceived(type: SGRequestType, userInfo: TUIUserInfo) {
    if type == .applyToTakeSeat {
    let agree = true // true为
    self.seatGridView.responseRemoteRequest(userId: userInfo.userId, agree: true) {
    // 同意上麦成功
    } onError: { code, message in
    // 同意上麦失败
    }
    }
    }
    void onSeatRequestReceived(VoiceRoomDefine.RequestType type, TUIRoomDefine.UserInfo userInfo) {
    if (type == APPLY_TO_TAKE_SEAT) {
    boolean agree = true; // true:同意连麦, false:拒绝连麦
    seatGridView.seatGridView.responseRemoteRequest(userInfo.userId, agree, new TUIRoomDefine.ActionCallback() {
    @Override
    public void onSuccess () {
    // 同意上麦成功
    }
    
    @Override
    public void onError (TUICommonDefine.Error error, String message) {
    // 同意上麦成功
    }
    });
    }
    }

    主动下麦

    当您在麦上且想主动下麦时,可调用 leaveSeat 接口。
    iOS
    Android
    self.seatGridView.leaveSeat {
    // 主动下麦成功
    } onError: { code, message in
    // 主动下麦失败
    }
    seatGridView.leaveSeat(new TUIRoomDefine.ActionCallback {
    @Override
    public void onSuccess () {
    // 主动下麦成功
    }
    
    @Override
    public void onError (TUICommonDefine.Error error, String message) {
    // 主动下麦失败
    }
    });

    移动麦位

    当您在1号麦并向切换到2号麦时,可调用 moveToSeat 接口,传入需要切换的麦位索引。
    iOS
    Android
    let index = 2
    self.seatGridView.moveToSeat(index: destinationIndex) {
    // 移动麦位成功
    } onError: { code, message in
    // 移动麦位失败
    }
    int index = 2;
    seatGridView.moveToSeat(index, new TUIRoomDefine.ActionCallback {
    @Override
    public void onSuccess () {
    //移动麦位成功
    }
    
    @Override
    public void onError (TUICommonDefine.Error error, String message) {
    // 移动麦位失败
    }
    });

    邀请上麦

    当您是房主,且想将未在麦位上的人邀请到4号麦位上,可调用 takeUserOnSeatByAdmin 接口,传入三个参数:被邀请上麦的麦位索引、超时时间和被邀请上麦的用户Id。
    iOS
    Android
    let tartgetIndex = 4
    let timeout = 30
    let targetUserId = "100002" // 请替换成您想要踢下麦的主播的用户Id
    self.takeUserOnSeatByAdmin(index: targetIndex, timeout: timeout, userId: targetUserId) {
    // 上麦邀请被接受
    } onRejected: { userInfo in
    // 上麦邀请被拒绝
    } onTimeout: { userInfo in
    // 上麦邀请超时
    } onCancelled: { userInfo in
    // 上麦邀请被取消
    } onError: { userInfo, code, message in
    // 上麦邀请异常
    }
    
    int tartgetIndex = 4;
    int timeout = 30;
    String targetUserId = "100002"; // 请替换成您想要踢下麦的主播的用户Id
    seatGridView.takeUserOnSeatByAdmin(targetIndex, timeout, targetUserId, new new TUIRoomDefine.RequestCallback() {
    @Override
    public void onAccepted(String requestId, String userId) {
    // 上麦邀请被接受
    }
    
    @Override
    public void onRejected(String requestId, String userId, String message) {
    // 上麦邀请被拒绝
    }
    
    @Override
    public void onCancelled(String requestId, String userId) {
    // 上麦邀请被取消
    }
    
    @Override
    public void onTimeout(String requestId, String userId) {
    // 上麦邀请已超时
    }
    
    @Override
    public void onError(String requestId, String userId, TUICommonDefine.Error error, String message) {
    // 上麦邀请异常
    }
    });
    当有人邀请您上麦时, 您会收到 onSeatRequestReceived 回调, 您可通过调用 responseRemoteRequest 同意/拒绝对方的上麦邀请。
    iOS
    Android
    func onSeatRequestReceived(type: SGRequestType, userInfo: TUIUserInfo) {
    if type == .inviteToTakeSeat {
    let isAccepted = true // true表示同意邀请, false表示拒绝邀请
    self.seatGridView.responseRemoteRequest(userId: userInfo.userId, agree: isAccepted) {
    // 同意上麦邀请成功
    } onError: { code, message in
    // 同意上麦邀请失败
    }
    }
    }
    
    void onSeatRequestReceived(VoiceRoomDefine.RequestType type, TUIRoomDefine.UserInfo userInfo) {
    if (type == INVITE_TO_TAKE_SEAT) {
    boolean isAccepted = true; // true表示同意邀请, false表示拒绝邀请
    seatGridView.responseRemoteRequest(userInfo.userId, isAccepted, new TUIRoomDefine.ActionCallback {
    @Override
    public void onSuccess () {
    // 同意上麦邀请成功
    }
    
    @Override
    public void onError (TUICommonDefine.Error error, String message) {
    // 同意上麦邀请失败
    }
    });
    }
    }

    踢人下麦

    当您是房主,且想将4号麦位上的主播踢下麦时,可调用 kickUserOffSeatByAdmin 接口,传入想要踢下麦的用户Id。
    iOS
    Android
    let targetUserId = "100002" // 请替换成您想要踢下麦的主播的用户Id
    self.seatGridView.kickUserOffSeatByAdmin(userId: targetUserId) {
    // 踢人下麦成功
    } onError: { code, message in
    // 踢人下麦失败
    }
    String targetUserId = "100002"; // 请替换成您想要踢下麦的主播的用户Id
    seatGridView.kickUserOffSeatByAdmin(targetUserId, new TUIRoomDefine.ActionCallback {
    @Override
    public void onSuccess () {
    // 踢人下麦成功
    }
    
    @Override
    public void onError (TUICommonDefine.Error error, String message) {
    // 踢人下麦失败
    }
    });

    锁定麦位

    当您是房主,且想将5号空麦位锁定不让其他人上麦,或想将6号麦位上的主播静音时时,可调用 lockSeat 接口,传入两个参数:将要锁定的麦位索引和锁定模式。
    锁定模式(TUISeatLockParams)的结构如下:
    属性名称
    字段含义
    补充说明
    数据类型
    填写示例
    lockSeat
    
    锁定麦位
    
    锁定对应麦位则该麦位不允许申请上麦。
    布尔值
    当锁定麦位时为true
    lockVideo
    锁定麦位摄像头
    锁定对应麦位摄像头则该麦位不再发布视频流。
    布尔值
    false
    lockAudio
    锁定麦位麦克风
    
    锁定对应麦位摄像头则该麦位不再发布音频流。
    
    
    布尔值
    当锁定麦位麦克风时为true
    iOS
    Android
    // 锁定麦位
    let lockSeatIndex = 5
    let lockSeatParam = TUISeatLockParams()
    lockSeatParam.lockSeat = true
    self.seatGridView.lockSeat(index: lockSeatIndex, lockMode: lockSeatParam) {
    // 锁定麦位成功
    } onError: { code, message in
    // 锁定麦位失败
    }
    
    // 锁定麦位麦克风
    let lockSeatAudioIndex = 6
    let lockSeatAudioParam = TUISeatLockParams()
    lockSeatAudioParam.lockAudio = true
    self.seatGridView.lockSeat(index: lockSeatAudioIndex, lockMode: lockSeatAudioParam) {
    // 锁定麦位麦克风成功
    } onError: { code, message in
    // 锁定麦位麦克风失败
    }
    // 锁定麦位
    int lockSeatIndex = 5;
    TUIRoomDefine.SeatLockParams lockSeatParam = new TUIRoomDefine.SeatLockParams();
    lockSeatParam.lockSeat = true;
    seatGridView.lockSeat(lockSeatIndex, lockSeatParam, new TUIRoomDefine.ActionCallback() {
    @Override
    public void onSuccess() {
    // 锁定麦位成功
    }
    
    @Override
    public void onError(TUICommonDefine.Error error, String message) {
    // 锁定麦位失败
    }
    });
    
    // 锁定麦位麦克风
    int lockSeatIndex = 6;
    TUIRoomDefine.SeatLockParams lockSeatAudioParam = new TUIRoomDefine.SeatLockParams();
    lockSeatAudioParam.lockAudio = true;
    seatGridView.lockSeat(lockSeatIndex, lockSeatAudioParam, new TUIRoomDefine.ActionCallback() {
    @Override
    public void onSuccess() {
    // 锁定麦位麦克风成功
    }
    
    @Override
    public void onError(TUICommonDefine.Error error, String message) {
    // 锁定麦位麦克风失败
    }
    });
    联系我们

    联系我们,为您的业务提供专属服务。

    技术支持

    如果你想寻求进一步的帮助,通过工单与我们进行联络。我们提供7x24的工单服务。

    7x24 电话支持