Audience Connection

本文档主要介绍如何使用视频直播核心组件 LiveStreamCore 模块的 LiveCoreView 实现观众连麦。
LiveCoreView 在观众连麦方面支持如下能力:

前提条件

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

使用指引

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

您需要先导入 LiveStreamCore 模块,然后创建一个 LiveCoreView 视图对象,并将其添加到自己的视图上。
iOS
Android
import LiveStreamCore
import RTCRoomEngine

class AudienceConnectionController: UIViewController {
private let liveCoreView: LiveCoreView = {
let view = LiveCoreView()
return view
}()
override func viewDidLoad() {
super.viewDidLoad()
self.liveCoreView.registerConnectionObserver(observer: self)
// 将 liveCoreView 添加到视图上,同时设置好布局约束
}
deinit {
self.liveCoreView.unregisterConnectionObserver(observer: self)
}
}
public class AudienceConnectionActivity extends AppCompatActivity implements LiveCoreViewDefine.ConnectionObserver {
private LiveCoreView liveCoreView;
@Override
protected void onCreate(@Nullable Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
liveCoreView = new LiveCoreView(this);
addContentView(liveCoreView,
new ViewGroup.LayoutParams(ViewGroup.LayoutParams.MATCH_PARENT, ViewGroup.LayoutParams.MATCH_PARENT));

liveCoreView.registerConnectionObserver(this);
}

@Override
protected void onDestroy() {
super.onDestroy();
liveCoreView.unregisterConnectionObserver(this);
}
}

步骤2:观众连麦

申请连麦

当您想要和某人连麦时,调用 requestIntraRoomConnection 接口,传入三个参数: 连麦的用户Id、超时时长和是否打开摄像头。
iOS
Android
let userId = "100012" // 请将这里替换成您想发起连麦的用户的用户Id,当您传入空字符串时,默认和房主连麦
let timeout = 30 // 请将这里替换成您申请上麦的超时时间,单位秒,如果设置为 0,SDK 不会做超时检测,也不会触发超时回调
let openCamera = true //当您想发起视频连麦时,openCamera为true,若为语音连麦,则openCamera为false
self.liveCoreView.requestIntraRoomConnection(userId: userId, timeOut: timeout, openCamera: true) {
// 发起连麦请求成功
} onError: { code, message in
// 发起连麦请求失败
}
String userId = "anchorUserId"; // 请将这里替换成您想发起连麦的用户的用户Id,当您传入空字符串时,默认和房主连麦
int timeout = 30; // 请将这里替换成您申请上麦的超时时间,单位秒,如果设置为 0,SDK 不会做超时检测,也不会触发超时回调
boolean openCamera = true; //当您想发起视频连麦时,openCamera为true,若为语音连麦,则openCamera为false
liveCoreView.requestIntraRoomConnection(userId, timeout, true, new TUIRoomDefine.ActionCallback() {
@Override
public void onSuccess() {
// 发起连麦请求成功
}

@Override
public void onError(TUICommonDefine.Error error, String message) {
// 发起连麦请求失败
}
});
当您是连麦被邀请方时,您会收到 onUserConnectionRequest 回调,您可调用 respondIntraRoomConnection 接口接受/拒绝连麦。
iOS
Android
func onUserConnectionRequest(inviterUser: TUIUserInfo) {
let isAccepted = true // true:同意连麦, false:拒绝连麦
self.liveCoreView.respondIntraRoomConnection(userId: inviterUser.userId, isAccepted: isAccepted) {
// 响应请求成功
} onError: {code, message in
// 响应请求失败
}
}
@Override
public void onUserConnectionRequest(TUIRoomDefine.UserInfo userInfo) {
boolean isAccepted = true; // true:同意连麦, false:拒绝连麦
liveCoreView.respondIntraRoomConnection(userInfo.userId, isAccepted, new TUIRoomDefine.ActionCallback() {
@Override
public void onSuccess() {
// 响应请求成功
}

@Override
public void onError(TUICommonDefine.Error error, String message) {
// 响应请求失败
}
});
}

观众主动断开连麦

当您不想和房主连麦时,调用 terminateIntraRoomConnection 接口即可断开连麦。
iOS
Android
self.liveCoreView.terminateIntraRoomConnection()
liveCoreView.terminateIntraRoomConnection();

房主中断和观众连麦

当您想中断和某观众的连麦时,调用 disconnectUser 接口,传入对应用户的用户Id。
iOS
Android
let targetUserId = "100010" //请将这里替换成您想要中断连麦的观众用户Id
self.liveCoreView.disconnectUser(userId: targetUserId) {
// 中断连麦成功
} onError: { code, message in
// 中断连麦失败
}
String targetUserId = "100010"; //请将这里替换成您想要中断连麦的观众用户Id
liveCoreView.disconnectUser(targetUserId, new TUIRoomDefine.ActionCallback() {
@Override
public void onSuccess() {
// 中断连麦成功
}

@Override
public void onError(TUICommonDefine.Error error, String message) {
// 中断连麦失败
}
});