Broadcast

本文档主要介绍如何使用 SeatGridView 开播,只有开播后,其他观众才能进入到该语聊房中收听主播的直播。

前提条件

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

使用指引

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

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

class BroadcastController: UIViewController {
private let seatGridView: SeatGridView = {
let view = SeatGridView()
return view
}()
override func viewDidLoad() {
super.viewDidLoad()
// 将 seatGridView 添加到视图上,同时设置好布局约束
}
}
import com.trtc.uikit.livekit.seatGridView.SeatGridView;

public class BroadcastActivity extends AppCompatActivity {
@Override
protected void onCreate(@Nullable Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
SeatGridView seatGridView = new SeatGridView(this);
addContentView(seatGridView,
new ViewGroup.LayoutParams(ViewGroup.LayoutParams.MATCH_PARENT, ViewGroup.LayoutParams.MATCH_PARENT));

}
}

步骤2:准备开播参数

在调用 startVoiceRoom 接口时需要填写关键参数 TUIRoomInfo,接下来进行详细介绍:

参数:TUIRoomInfo

TUIRoomInfo 由很多的字段构成,但通常您只需要关心如下几个字段的填写:
参数名称
字段含义
补充说明
数据类型
填写示例
roomId
房间ID
只允许包含大小写英文字母(a-z、A-Z)、数字(0-9)及下划线和连词符。
字符串
"room_100001"
name
房间名称
字符串类型的房间名称。
字符串
"denny`s room"
seatMode

上麦模式

该字段只有开启麦位控制后生效。
分为“自由上麦模式(freeToTake)”和“申请上麦模式(applyToTake)”。自由上麦模式下台下观众可以自由上麦,无需申请。上麦模式下台下观众上麦需要房主或同意后才能上麦。
枚举值
TUISeatMode.applyToTake
maxSeatCount
最大麦位数
数字类型的最大麦位数,这里指最多maxSeatCount个人同时在麦上。
最大麦位数和购买的套餐包连麦人数上限一致
数字
10
isSeatEnabled
是否开启麦位控制
布尔类型的麦位控制使能标志符。
布尔值
true
roomType
房间类型
分为“会议(conference)”和“直播(live)”两种房间类型,语聊属于直播,因此这里使用live。
枚举值
TUIRoomType.live

步骤3:开播

在准备好步骤2中的参数 TUIRoomInfo 后,就可以调用 startVoiceRoom 接口函数开播了。
在开播后,您还需要调用 startMicrophone 接口开启本地麦克风,确保观众可以听到您的声音。
iOS
Android
// 组装 TRTC 进房参数,请将 TRTCParams 中的各字段都替换成您自己的参数
let roomInfo = TUIRoomInfo()
roomInfo.roomId = "voice_100001" // 请替换成您自己的房间ID
roomInfo.name = "denny`s room" // 请替换成您自己的房间名称
roomInfo.seatMode = .applyToTake // 通常视频直播场景下连麦都采用申请上麦模式,若您的业务中观众无需申请才能上麦时,此处可改写为freeToTake
roomInfo.maxSeatCount = 10 // 请替换成您购买的Live套餐包的最大麦位数
roomInfo.isSeatEnabled = true // 如果您不需要麦位控制,可以将isSeatEnabled置为false
roomInfo.roomType = .live // 房间类型请确保是直播(live)类型

self.seatGridView.startVoiceRoom(roomInfo: roomInfo) { [weak self] roomInfo in
// 开播成功
guard let self = self else { return }
self.seatGridView.startMicrophone {
// 打开本地麦克风成功
} onError: { code, message in
// 打开本地麦克风失败
}
} onError: { code, message in
// 开播失败
}
TUIRoomDefine.RoomInfo roomInfo = new TUIRoomDefine.RoomInfo();
roomInfo.roomId = "voice_100001"; // 请替换成您自己的房间ID
roomInfo.name = "denny's room"; // 请替换成您自己的房间名称
roomInfo.maxSeatCount = 10; // 请替换成您购买的Live套餐包的最大麦位数
roomInfo.isSeatEnabled = true; // 如果您不需要麦位控制,可以将 isSeatEnabled 置为 false
roomInfo.roomType = TUIRoomDefine.RoomType.LIVE; //房间类型请确保是直播(live)类型
roomInfo.seatMode = TUIRoomDefine.SeatMode.APPLY_TO_TAKE; //若您不需要申请后才能上麦,此处也可设为FREE_TO_TAKE

seatGridView.startVoiceRoom(roomInfo, new TUIRoomDefine.GetRoomInfoCallback() {
@Override
public void onSuccess(TUIRoomDefine.RoomInfo roomInfo) {
// 开播成功
seatGridView.startMicrophone( new TUIRoomDefine.ActionCallback() {
@Override
public void onSuccess() {
// 打开本地麦克风成功
}

@Override
public void onError(TUICommonDefine.Error error, String message) {
// 打开本地麦克风失败
}
});
}
@Override
public void onError(TUICommonDefine.Error error, String message) {
// 开播失败
}
});