tencent cloud

文档反馈

主播连线

最后更新时间:2025-01-09 16:02:17
    本文档主要介绍如何使用 RTC Room Engine SDK 实现 主播连线功能。

    前提条件

    在使用 RTC RoomEngine SDK前,您需要先调用 登录 SDK,以便后续功能正常使用。

    使用指引

    说明:
    使用连线功能时,请确保您已开播。

    发起连线请求

    您首先需要通过 getLiveConnectionManager 接口获取 TUILiveConnectionManager插件。
    然后再使用 TUILiveConnectionManager 插件的 requestConnection 接口实现该功能,传入三个参数:邀请连线的主播所在房间的房间Id、超时时长和扩展信息。
    以邀请直播间Id为 live_100002 的主播连线为例:
    iOS
    Android
    import RTCRoomEngine
    
    let roomIdList = ["live_100002"] //请将其替换成您想要邀请连线的主播所在房间的房间ID
    let timeout = 30 // 请将这里替换成您申请上麦的超时时间,单位秒,如果设置为 0,SDK 不会做超时检测,也不会触发超时回调
    let extensionInfo = ""
    let connectionManager = TUIRoomEngine.sharedInstance().getLiveConnectionManager()
    connectionManager.requestConnection(roomIdList: roomIdList,
    timeout: TimeInterval(timeout),
    extensionInfo: extensionInfo) { connectionResults in
    // 发起连线请求成功
    } onError: { code, message in
    // 发起连线请求失败
    }
    List<String> roomIdList = Collections.singletonList("live_100002"); //请将其替换成您想要邀请连线的主播所在房间的房间ID
    int timeout = 30; // 请将这里替换成您申请上麦的超时时间,单位秒,如果设置为 0,SDK 不会做超时检测,也不会触发超时回调
    String extensionInfo = "";
    TUILiveConnectionManager connectionManager = TUIRoomEngine.sharedInstance().getLiveConnectionManager();
    connectionManager.requestConnection(roomIdList, timeout, extensionInfo, new TUILiveConnectionManager.ConnectionRequestCallback() {
    @Override
    public void onSuccess(Map<String, TUILiveConnectionManager.ConnectionCode> resultMap) {
    // 发起连线请求成功
    }
    @Override
    public void onError(TUICommonDefine.Error error, String message) {
    // 发起连线请求失败
    }
    });
    若您通过 addObserver 接口成为了 TUILiveConnectionManager SDK的观察者,则当有人申请和您连线时,您会收到 onConnectionRequestReceived 回调,您可通过 acceptConnection / rejectConnection 接口接受或拒绝该请求。
    iOS
    Android
    func onConnectionRequestReceived(inviter: TUIConnectionUser,
    inviteeList: [TUIConnectionUser],
    extensionInfo: String) {
    // 同意请求
    connectionManager.acceptConnection(inviter.roomId) {
    // 接受连线请求成功
    } onError: { code, message in
    // 接受连线请求失败
    }
    
    // 拒绝请求
    connectionManager.rejectConnection(inviter.roomId) {
    // 拒绝连线请求成功
    } onError: { code, message in
    // 拒绝连线请求失败
    }
    }
    public void onConnectionRequestReceived(TUILiveConnectionManager.ConnectionUser inviter,
    List<TUILiveConnectionManager.ConnectionUser> inviteeList,
    String extensionInfo) {
    // 同意请求
    connectionManager.acceptConnection(inviter.roomId, new TUIRoomDefine.ActionCallback() {
    @Override
    public void onSuccess() {
    // 接受连线请求成功
    }
    @Override
    public void onError(TUICommonDefine.Error error, String message) {
    // 接受连线请求失败
    }
    });
    
    
    // 拒绝请求
    connectionManager.rejectConnection(inviter.roomId, new TUIRoomDefine.ActionCallback() {
    @Override
    public void onSuccess() {
    // 拒绝连线请求成功
    }
    @Override
    public void onError(TUICommonDefine.Error error, String message) {
    // 拒绝连线请求失败
    }
    });
    }

    放弃连线请求

    您首先需要通过 getLiveConnectionManager 接口获取 TUILiveConnectionManager插件。
    然后再使用 TUILiveConnectionManager 插件的 cancelConnectionRequest 接口实现该功能,传入参数:放弃连线邀请的主播所在房间的房间Id。
    以放弃和直播间Id为 live_100002 的主播连线请求为例:
    iOS
    Android
    let roomIdList = ["live_100002"] //请将其替换成您想要放弃连线邀请的主播所在房间的房间ID
    let connectionManager = TUIRoomEngine.sharedInstance().getLiveConnectionManager()
    connectionManager.cancelConnectionRequest(roomIdList: roomIdList) {
    // 放弃连线邀请成功
    } onError: { code, message in
    // 放弃连线邀请失败
    }
    List<String> roomIdList = Collections.singletonList("live_100002"); //请将其替换成您想要放弃连线邀请的主播所在房间的房间ID
    
    TUILiveConnectionManager connectionManager = TUIRoomEngine.sharedInstance().getLiveConnectionManager();
    connectionManager.cancelConnectionRequest(roomIdList, new TUIRoomDefine.ActionCallback() {
    @Override
    public void onSuccess() {
    // 放弃连线邀请成功
    }
    @Override
    public void onError(TUICommonDefine.Error error, String message) {
    // 放弃连线邀请失败
    }
    });

    中断连线

    您首先需要通过 getLiveConnectionManager 接口获取 TUILiveConnectionManager插件。
    然后再使用 TUILiveConnectionManager 插件的 disconnect 接口中断当前正在进行的连线。
    iOS
    Android
    import RTCRoomEngine
    
    let connectionManager = TUIRoomEngine.sharedInstance().getLiveConnectionManager()
    connectionManager.disconnect {
    // 中断连线成功
    } onError: { code, message in
    // 中断连线失败
    }
    TUILiveConnectionManager connectionManager = TUIRoomEngine.sharedInstance().getLiveConnectionManager();
    connectionManager.disconnect(new TUIRoomDefine.ActionCallback() {
    @Override
    public void onSuccess() {
    // 中断连线成功
    }
    
    @Override
    public void onError(TUICommonDefine.Error error, String message) {
    // 中断连线失败
    }
    });

    监听回调

    iOS
    Android
    您可通过调用 addObserver 成为 TUILiveConnectionManager 的观察者,监听连线相关的回调。
    CoHostController 成为观察者为例:
    import RTCRoomEngine
    
    class CoHostController: NSObject, TUILiveConnectionObserver {
    override init() {
    super.init()
    TUIRoomEngine.sharedInstance().getLiveConnectionManager().addObserver(self)
    }
    deinit {
    TUIRoomEngine.sharedInstance().getLiveConnectionManager().removeObserver(self)
    }
    // 连线用户列表发生变化时触发
    func onConnectionUserListChanged(connectedList: [TUIConnectionUser],
    joinedList: [TUIConnectionUser],
    leavedList: [TUIConnectionUser]) {
    // 连线列表发生变化了, 最新的连线列表:connectedList, 新连线的用户列表:joinedList, 新中断连线的用户列表:leavedList
    }
    // 收到连线邀请时触发
    func onConnectionRequestReceived(inviter: TUIConnectionUser,
    inviteeList: [TUIConnectionUser],
    extensionInfo: String) {
    // 收到了来自inviter.userName的连线邀请
    }
    // 收到连线邀请被取消时触发
    func onConnectionRequestCancelled(inviter: TUIConnectionUser) {
    // 来自inviter.userName的连线邀请被取消了
    }
    // 收到连线邀请被接受时触发
    func onConnectionRequestAccept(invitee: TUIConnectionUser) {
    // 您对invitee.userName的连线邀请被接受了
    }
    // 收到连线邀请被拒绝时触发
    func onConnectionRequestReject(invitee: TUIConnectionUser) {
    // 您对invitee.userName的连线邀请被拒绝了
    }
    // 收到连线邀请被超时触发
    func onConnectionRequestTimeout(inviter: TUIConnectionUser, invitee: TUIConnectionUser) {
    // 来自inviter.userName的连线邀请超时了
    }
    }
    您可通过调用 addObserver 成为 TUILiveConnectionManager 的观察者,监听连线相关的回调。
    CoHostObserver 成为观察者为例:
    class CoHostObserver extends TUILiveConnectionManager.Observer {
    CoHostObserver() {
    TUIRoomEngine.sharedInstance().getLiveConnectionManager().addObserver(this);
    }
    
    
    // 连线用户列表发生变化时触发
    @Override
    public void onConnectionUserListChanged(List<TUILiveConnectionManager.ConnectionUser> connectedList,
    List<TUILiveConnectionManager.ConnectionUser> joinedList,
    List<TUILiveConnectionManager.ConnectionUser> leavedList) {
    // 连线列表发生变化了, 最新的连线列表:connectedList, 新连线的用户列表:joinedList, 新中断连线的用户列表:leavedList
    }
    // 收到连线邀请时触发
    @Override
    public void onConnectionRequestReceived(TUILiveConnectionManager.ConnectionUser inviter,
    List<TUILiveConnectionManager.ConnectionUser> inviteeList,
    String extensionInfo) {
    // 收到了来自inviter.userName的连线邀请
    }
    // 收到连线邀请被取消时触发
    @Override
    public void onConnectionRequestCancelled(TUILiveConnectionManager.ConnectionUser inviter) {
    // 来自inviter.userName的连线邀请被取消了
    }
    // 收到连线邀请被接受时触发
    @Override
    public void onConnectionRequestAccept(TUILiveConnectionManager.ConnectionUser invitee) {
    // 您对invitee.userName的连线邀请被接受了
    }
    // 收到连线邀请被拒绝时触发
    @Override
    public void onConnectionRequestReject(TUILiveConnectionManager.ConnectionUser invitee) {
    // 您对invitee.userName的连线邀请被拒绝了
    }
    // 收到连线邀请被超时触发
    @Override
    public void onConnectionRequestTimeout(TUILiveConnectionManager.ConnectionUser inviter,
    TUILiveConnectionManager.ConnectionUser invitee) {
    // 来自inviter.userName的连线邀请超时了
    }
    }
    联系我们

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

    技术支持

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

    7x24 电话支持