Audience Connection
本文档主要介绍如何使用视频直播核心组件
LiveStreamCore
模块的 LiveCoreView
实现观众连麦。LiveCoreView
在观众连麦方面支持如下能力:前提条件
使用指引
步骤1:将 LiveCoreView 添加到视图上
您需要先导入
LiveStreamCore
模块,然后创建一个 LiveCoreView
视图对象,并将其添加到自己的视图上。importLiveStreamCore
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;@Overrideprotected 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);}@Overrideprotected void onDestroy() {super.onDestroy();liveCoreView.unregisterConnectionObserver(this);}}
步骤2:观众连麦
申请连麦
当您想要和某人连麦时,调用
requestIntraRoomConnection
接口,传入三个参数: 连麦的用户Id、超时时长和是否打开摄像头。let userId = "100012" // 请将这里替换成您想发起连麦的用户的用户Id,当您传入空字符串时,默认和房主连麦let timeout = 30 // 请将这里替换成您申请上麦的超时时间,单位秒,如果设置为 0,SDK 不会做超时检测,也不会触发超时回调let openCamera = true //当您想发起视频连麦时,openCamera为true,若为语音连麦,则openCamera为falseself.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为falseliveCoreView.requestIntraRoomConnection(userId, timeout, true, new TUIRoomDefine.ActionCallback() {@Overridepublic void onSuccess() {// 发起连麦请求成功}@Overridepublic void onError(TUICommonDefine.Error error, String message) {// 发起连麦请求失败}});
当您是连麦被邀请方时,您会收到
onUserConnectionRequest
回调,您可调用 respondIntraRoomConnection
接口接受/拒绝连麦。func onUserConnectionRequest(inviterUser: TUIUserInfo) {let isAccepted = true // true:同意连麦, false:拒绝连麦self.liveCoreView.respondIntraRoomConnection
(
userId
:
inviterUser
.
userId
,
isAccepted
:
isAccepted
)
{
// 响应请求成功
}
onError
:
{
code
,
message
in
// 响应请求失败
}
}
@Overridepublic void onUserConnectionRequest(TUIRoomDefine.UserInfo userInfo) {boolean isAccepted = true; // true:同意连麦, false:拒绝连麦liveCoreView.respondIntraRoomConnection(userInfo.userId, isAccepted, new TUIRoomDefine.ActionCallback() {@Overridepublic void onSuccess() {// 响应请求成功
}@Overridepublic void onError(TUICommonDefine.Error error, String message) {// 响应请求失败
}});}
观众主动断开连麦
当您不想和房主连麦时,调用
terminateIntraRoomConnection
接口即可断开连麦。self.liveCoreView.terminateIntraRoomConnection()
liveCoreView.terminateIntraRoomConnection();
房主中断和观众连麦
当您想中断和某观众的连麦时,调用
disconnectUser
接口,传入对应用户的用户Id。let targetUserId = "100010" //请将这里替换成您想要中断连麦的观众用户Idself.liveCoreView.disconnectUser(userId: targetUserId) {// 中断连麦成功} onError: { code, message in// 中断连麦失败}
String targetUserId = "100010"; //请将这里替换成您想要中断连麦的观众用户IdliveCoreView.disconnectUser(targetUserId, new TUIRoomDefine.ActionCallback() {@Overridepublic void onSuccess() {// 中断连麦成功}@Overridepublic void onError(TUICommonDefine.Error error, String message) {// 中断连麦失败}});