跳到主要内容

自定义房间属性

本文档介绍如何使用自定义房间属性功能来存储和同步房间相关的业务信息。

功能概述

自定义房间属性允许您在房间中存储和同步业务相关的键值对数据,并实时通知房间内的其他用户。

设置属性

通过 setRoomAttribute 方法设置房间的自定义属性。设置成功后,属性会同步给房间内的所有用户。

方法签名:

Java
void setRoomAttribute(String key, String value, MessageContent message, final IRCRTCResultCallback callback);

参数说明:

参数类型说明
keyString属性键名
valueString属性值
messageMessageContent是否在设置属性的时候携带消息内容,传 null 则不往房间中发送消息
callbackIRCRTCResultCallback操作结果回调

示例代码:

Java
String key = "backgroundMusic";
String value = "music_001";

room.setRoomAttribute(key, value, null, new IRCRTCResultCallback() {
@Override
public void onSuccess() {
// 属性设置成功
Log.d("RTC", "房间属性设置成功");
}

@Override
public void onFailed(RTCErrorCode errorCode) {
// 属性设置失败
Log.e("RTC", "房间属性设置失败: " + errorCode);
}
});

获取属性

通过 getRoomAttributes 方法获取房间的自定义属性。支持获取指定属性或所有属性。

接口

Java
void getRoomAttributes(List<String> attributeKeys, final IRCRTCResultDataCallback<Map<String, String>> callback);

参数说明

参数类型说明
attributeKeysList<String>要获取的属性键名列表,传 null 表示获取所有属性
callbackIRCRTCResultDataCallback<Map<String, String>>获取结果回调

示例代码

获取所有属性:

Java
// 获取房间的所有自定义属性
room.getRoomAttributes(null, new IRCRTCResultDataCallback<Map<String, String>>() {
@Override
public void onSuccess(Map<String, String> attributes) {

}

@Override
public void onFailed(RTCErrorCode errorCode) {

}
});

删除属性

通过 deleteRoomAttributes 方法删除房间的自定义属性。支持批量删除多个属性。

接口

Java
void deleteRoomAttributes(List<String> attributeKeys, MessageContent message, final IRCRTCResultCallback callback);

参数说明:

参数类型说明
attributeKeysList<String>要删除的属性键名列表
messageMessageContent可选的消息内容,传入时会向房间发送消息通知,传 null 则不发送
callbackIRCRTCResultCallback删除结果回调

示例代码:

Java
// 批量删除多个属性
List<String> keysToDelete = Arrays.asList("backgroundMusic", "theme", "gameStatus");

room.deleteRoomAttributes(keysToDelete, null, new IRCRTCResultCallback() {
@Override
public void onSuccess() {
// 批量删除成功
Log.d("RTC", "批量删除房间属性成功");
}

@Override
public void onFailed(RTCErrorCode errorCode) {
// 删除失败
Log.e("RTC", "批量删除房间属性失败: " + errorCode);
}
});

属性变化回调

当房间内的用户设置或删除属性时,如果操作时传入了 MessageContent 参数,房间内的其他用户将收到属性变化通知。

监听属性变化

通过注册 IRCRTCRoomEventsListener 监听器来接收房间属性变化消息:

回调方法:

Java
public void onReceiveMessage(Message message);

参数说明:

参数类型说明
messageMessage房间内接收到的消息对象

示例代码:

Java
// 注册房间事件监听器
room.registerRoomListener(new IRCRTCRoomEventsListener() {
...
@Override
public void onReceiveMessage(Message message) {
super.onReceiveMessage(message);
// 接收到房间消息(包括属性变化通知)
}

// 其他回调方法...
});