Anchor Connection

本文档主要介绍如何使用 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的连线邀请超时了
}
}