自定义房间信息

本文档主要介绍如何使用 RTC Room Engine SDK 实现自定义房间信息。

前提条件

在使用 RTC RoomEngine SDK 前,您需要先调用 登录 SDK,以便后续功能正常使用。
只有当您是主播时,设置的直播间信息才会生效。您可以参见 语聊开播与收听视频开播与观看 来完成直播间的创建。

使用指引

说明:
使用自定义房间信息功能时,请确保您是房主或者管理员。房间类型为 live。

设置房间信息:

iOS
Android
您需要准备好需要设置的参数TUILiveInfo,接下来进行详细介绍:
参数:TUILiveInfo
TUILiveInfo 由很多的字段构成,但通常您只需要关心如下几个字段的填写:
参数名称
类型
描述
activityStatus
Int
直播间活跃状态:用户自定义标记。
backgroundUrl
String
直播间背景,最大支持 200 个字节。
categoryList
List<Int>
直播间分类标签,单个房间最大支持3个标记。
coverUrl
String
直播间封面,最大支持 200 个字节。
isPublicVisible
Bool
直播间是否公开,设置为 true 后即可在 房间列表 中被显示。
在准备好 TUILiveInfo 之后,便可以通过调用setLiveInfo接口设置直播间信息。
您需要准备好需要设置的参数LiveInfo,接下来进行详细介绍:
参数:LiveInfo
LiveInfo 由很多的字段构成,但通常您只需要关心如下几个字段的填写:
参数名称
类型
描述
activityStatus
Int
直播间活跃状态: 用户自定义标记。
backgroundUrl
String
直播间背景,最大支持 200 个字节。
categoryList
List<Int>
直播间分类标签,单个房间最大支持3个标记。
coverUrl
String
直播间封面,最大支持 200 个字节。
isPublicVisible
Bool
直播间是否公开,设置为 true 后即可在 房间列表 中被显示。
在准备好 TUILiveInfo 之后,便可以通过调用setLiveInfo接口设置直播间信息。
示例:
iOS
Android
import RTCRoomEngine

let roomEngine = TUIRoomEngine.sharedInstance()
let liveListManager = roomEngine.getExtension(extensionType: .liveListManager) as? TUILiveListManager

let liveInfo = TUILiveInfo()
liveInfo.backgroundUrl = "backgroundUrl" // 替换为您需要的直播间背景图片
liveInfo.coverUrl = "coverUrl" // 替换为您需要的直播间封面图片
liveInfo.isPublicVisible = true // 直播间公开
liveInfo.categoryList = [1, 2] // 可替换为您业务中的直播间分类

let modifyFlag: TUILiveModifyFlag = [.backgroundUrl, .coverUrl, .publish, .category] // 这里为您所修改的类别

liveListManager?.setLiveInfo(liveInfo, modifyFlag: modifyFlag) {
// 设置直播间信息成功
} onError: { code, message in
// 设置直播间信息失败
}
TUIRoomEngine roomEngine = TUIRoomEngine.sharedInstance();
TUILiveListManager liveListManager = (TUILiveListManager) roomEngine.getExtension(TUICommonDefine.ExtensionType.LIVE_LIST_MANAGER);

TUILiveListManager.LiveInfo liveInfo = new TUILiveListManager.LiveInfo();
liveInfo.backgroundUrl = "backgroundUrl"; // 替换为您需要的直播间背景图片
liveInfo.coverUrl = "coverUrl"; // 替换为您需要的直播间封面图片
liveInfo.isPublicVisible = true; // 直播间公开
liveInfo.categoryList =new ArrayList<>(Arrays.asList(1, 2)); // 可替换为您业务中的直播间分类


List<TUILiveListManager.LiveModifyFlag> modifyFlag = new ArrayList<>();
// 下面为您所修改的类别
modifyFlag.add(TUILiveListManager.LiveModifyFlag.BACKGROUND_URL);
modifyFlag.add(TUILiveListManager.LiveModifyFlag.COVER_URL);
modifyFlag.add(TUILiveListManager.LiveModifyFlag.PUBLISH);
modifyFlag.add(TUILiveListManager.LiveModifyFlag.CATEGORY);
liveListManager.setLiveInfo(liveInfo, modifyFlag, new TUIRoomDefine.ActionCallback() {
@Override
public void onSuccess() {
// 设置直播间信息成功
}
@Override
public void onError(TUICommonDefine.Error error, String message) {
// 设置直播间信息失败
}
});

修改房间名称:

使用updateRoomNameByAdmin API修改房间名称。SDK会通过onRoomNameChanged 回调通知房间内用户。
此函数仅有房主或管理员可以调用。
示例:
iOS
Android
import RTCRoomEngine

let roomEngine = TUIRoomEngine.sharedInstance()
let name = "New Name" //替换为您的真实用户名
roomEngine.updateRoomNameByAdmin(roomName: newName) {
//修改房间名成功
} onError: { code, message in
//修改房间名失败
}
TUIRoomEngine roomEngine = TUIRoomEngine.sharedInstance();
String newName = ""; //替换为你需要的newName
roomEngine.updateRoomNameByAdmin(newName ,new TUIRoomDefine.ActionCallback() {
@Override
public void onSuccess() {
//修改房间名成功
}

@Override
public void onError(TUICommonDefine.Error error, String message) {
//修改房间名成功
}
});

自定义房间信息:

使用setRoomMetadataByAdmin API设置房间自定义信息,已有该属性则更新其 value 值,没有则添加该属性。
此函数仅有房主或管理员可以调用,且此函数仅支持直播房间类型为Live
示例:
iOS
Android
import RTCRoomEngine

let roomEngine = TUIRoomEngine.sharedInstance()
roomEngine.setRoomMetadataByAdmin([key:value], onSuccess: {
//设置自定义数据成功
}, onError: {code ,message in
//设置自定义数据失败
})
TUIRoomEngine roomEngine = TUIRoomEngine.sharedInstance();

// 准备要设置或更新的元数据键值对
HashMap<String, String> metadataToUpdate = new HashMap<>(); 请填入您想要的键值对
metadataToUpdate.put("is_recording", "true"); // 设置是否正在录制,此处仅为举例

roomEngine.setRoomMetadataByAdmin(metadataToUpdate, new TUIRoomDefine.ActionCallback() {
@Override
public void onSuccess() {
// 设置成功的回调
}

@Override
public void onError(int errorCode, String errorMessage) {
// 设置失败的回调
}
});

获取房间自定义信息:

当设置自定义信息完成之后,您可以调用getRoomMetadata接口来获取当前直播间的全部或指定的信息。
此函数仅有房主或管理员可以调用,且此函数仅支持直播房间类型为Live
示例:
iOS
Android
import RTCRoomEngine

let roomEngine = TUIRoomEngine.sharedInstance()
let keys: [String] = [""]//参数传入房间自定义信息 key 列表, 如果 keys 传空则获取所有自定义信息

roomEngine.getRoomMetadata(array) { metadata in
//获取自定义信息成功
} onError: { code, message in
//获取自定义信息失败
}
TUIRoomEngine roomEngine = TUIRoomEngine.sharedInstance();

List<String> keysToQuery = new ArrayList<>();//替换为您需要查询的列表
roomEngine.getRoomMetadata(keysToQuery, new TUIRoomDefine.GetRoomMetadataCallback() {
@Override
public void onSuccess(Map<String, String> metadata) {
// 成功回调
}

@Override
public void onError(int errorCode, String errorMessage) {
// 失败回调
}
});