Anchor Connection
本文档主要介绍如何使用
RTC Room Engine
SDK 实现 主播连线功能。前提条件
使用指引
说明:
使用连线功能时,请确保您已开播。
发起连线请求
您首先需要通过
getLiveConnectionManager
接口获取 TUILiveConnectionManager
插件。然后再使用
TUILiveConnectionManager
插件的 requestConnection
接口实现该功能,传入三个参数:邀请连线的主播所在房间的房间Id、超时时长和扩展信息。以邀请直播间Id为 live_100002 的主播连线为例:
import RTCRoomEnginelet roomIdList = ["live_100002"] //请将其替换成您想要邀请连线的主播所在房间的房间IDlet 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"); //请将其替换成您想要邀请连线的主播所在房间的房间IDint timeout = 30; // 请将这里替换成您申请上麦的超时时间,单位秒,如果设置为 0,SDK 不会做超时检测,也不会触发超时回调String extensionInfo = "";TUILiveConnectionManager connectionManager = TUIRoomEngine.sharedInstance().getLiveConnectionManager();connectionManager.requestConnection(roomIdList, timeout, extensionInfo, new TUILiveConnectionManager.ConnectionRequestCallback() {@Overridepublic void onSuccess(Map<String, TUILiveConnectionManager.ConnectionCode> resultMap) {// 发起连线请求成功}@Overridepublic void onError(TUICommonDefine.Error error, String message) {// 发起连线请求失败}});
若您通过
addObserver
接口成为了 TUILiveConnectionManager
SDK的观察者,则当有人申请和您连线时,您会收到 onConnectionRequestReceived
回调,您可通过 acceptConnection
/ rejectConnection
接口接受或拒绝该请求。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() {@Overridepublic void onSuccess() {// 接受连线请求成功}@Overridepublic void onError(TUICommonDefine.Error error, String message) {// 接受连线请求失败}});// 拒绝请求connectionManager.rejectConnection(inviter.roomId, new TUIRoomDefine.ActionCallback() {@Overridepublic void onSuccess() {// 拒绝连线请求成功}@Overridepublic void onError(TUICommonDefine.Error error, String message) {// 拒绝连线请求失败}});}
放弃连线请求
您首先需要通过
getLiveConnectionManager
接口获取 TUILiveConnectionManager
插件。然后再使用
TUILiveConnectionManager
插件的 cancelConnectionRequest
接口实现该功能,传入参数:放弃连线邀请的主播所在房间的房间Id。以放弃和直播间Id为 live_100002 的主播连线请求为例:
let roomIdList = ["live_100002"] //请将其替换成您想要放弃连线邀请的主播所在房间的房间IDlet connectionManager = TUIRoomEngine.sharedInstance().getLiveConnectionManager()connectionManager.cancelConnectionRequest(roomIdList: roomIdList) {// 放弃连线邀请成功} onError: { code, message in// 放弃连线邀请失败}
List<String> roomIdList = Collections.singletonList("live_100002"); //请将其替换成您想要放弃连线邀请的主播所在房间的房间IDTUILiveConnectionManager connectionManager = TUIRoomEngine.sharedInstance().getLiveConnectionManager();connectionManager.cancelConnectionRequest(roomIdList, new TUIRoomDefine.ActionCallback() {@Overridepublic void onSuccess() {// 放弃连线邀请成功}@Overridepublic void onError(TUICommonDefine.Error error, String message) {// 放弃连线邀请失败}});
中断连线
您首先需要通过
getLiveConnectionManager
接口获取 TUILiveConnectionManager
插件。然后再使用
TUILiveConnectionManager
插件的 disconnect
接口中断当前正在进行的连线。import RTCRoomEnginelet connectionManager = TUIRoomEngine.sharedInstance().getLiveConnectionManager()connectionManager.disconnect {// 中断连线成功} onError: { code, message in// 中断连线失败}
TUILiveConnectionManager connectionManager = TUIRoomEngine.sharedInstance().getLiveConnectionManager();connectionManager.disconnect(new TUIRoomDefine.ActionCallback() {@Overridepublic void onSuccess() {// 中断连线成功}@Overridepublic void onError(TUICommonDefine.Error error, String message) {// 中断连线失败}});
监听回调
您可通过调用
addObserver
成为 TUILiveConnectionManager
的观察者,监听连线相关的回调。以
CoHostController
成为观察者为例:import RTCRoomEngineclass 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);}// 连线用户列表发生变化时触发@Overridepublic void onConnectionUserListChanged(List<TUILiveConnectionManager.ConnectionUser> connectedList,List<TUILiveConnectionManager.ConnectionUser> joinedList,List<TUILiveConnectionManager.ConnectionUser> leavedList) {// 连线列表发生变化了, 最新的连线列表:connectedList, 新连线的用户列表:joinedList, 新中断连线的用户列表:leavedList}// 收到连线邀请时触发@Overridepublic void onConnectionRequestReceived(TUILiveConnectionManager.ConnectionUser inviter,List<TUILiveConnectionManager.ConnectionUser> inviteeList,String extensionInfo) {// 收到了来自inviter.userName的连线邀请}// 收到连线邀请被取消时触发@Overridepublic void onConnectionRequestCancelled(TUILiveConnectionManager.ConnectionUser inviter) {// 来自inviter.userName的连线邀请被取消了}// 收到连线邀请被接受时触发@Overridepublic void onConnectionRequestAccept(TUILiveConnectionManager.ConnectionUser invitee) {// 您对invitee.userName的连线邀请被接受了}// 收到连线邀请被拒绝时触发@Overridepublic void onConnectionRequestReject(TUILiveConnectionManager.ConnectionUser invitee) {// 您对invitee.userName的连线邀请被拒绝了}// 收到连线邀请被超时触发@Overridepublic void onConnectionRequestTimeout(TUILiveConnectionManager.ConnectionUser inviter,TUILiveConnectionManager.ConnectionUser invitee) {// 来自inviter.userName的连线邀请超时了}}