聊天室管理
更新时间: 2024/05/31 18:33:58
网易云信 IM 支持聊天室管理功能,包括获取和维护聊天室资料、坐标、标签等信息。
本文介绍如何通过 NetEase IM SDK(以下简称 NIM SDK)管理聊天室。
前提条件
已实现聊天室登录。
聊天室相关事件监听
在进行聊天室相关操作前,您可以先注册监听聊天室相关事件。监听后,在进行聊天室管理操作后,会收到对应的通知。
-
相关回调
onChatroomInfoUpdated
:聊天室资料信息更新回调,返回V2NIMChatroomInfo
。聊天室内所有成员均会收到该回调。
-
示例代码
Android
javaV2NIMChatroomClient v2ChatroomClient = V2NIMChatroomClient.getInstance(instanceId);
V2NIMChatroomService v2ChatroomService = v2ChatroomClient.getChatroomService();
V2NIMChatroomListener listener = new V2NIMChatroomListener() {
@Override
public void onChatroomInfoUpdated(V2NIMChatroomInfo chatroom) {
}
};
v2ChatroomService.addChatroomListener(listener);
iOS
objective-c@interface Listener: NSObject<V2NIMChatroomListener>
- (void)addToService;
@end
@implementation Listener
- (void)addToService
{
id <V2NIMChatroomService> service = [[V2NIMChatroomClient getInstance:1] getChatroomService];
[service addChatroomListener:self];
}
- (void)onChatroomInfoUpdated:(V2NIMChatroomInfo *)chatroomInfo
{
}
@end
macOS/Windows
cppV2NIMChatroomListener listener;
listener.onChatroomInfoUpdated = [](V2NIMChatroomInfo chatroomInfo) {
// handle chatroom info updated
};
chatroomService.addChatroomListener(listener);
Web/uni-app/小程序
typescriptchatroom.V2NIMChatroomService.on('onChatroomInfoUpdated', function (chatroomInfo: V2NIMChatroomInfo){})
Harmony
typescriptchatroom.chatroomService.on('onChatroomInfoUpdated', (chatroomInfo: V2NIMChatroomInfo) => {})
获取聊天室信息
通过调用 V2NIMChatroomClient#getChatroomInfo
方法获取聊天室信息。
NIM SDK 不支持聊天室信息缓存,您需要自行实现数据缓存。
- 示例代码
Android
javaV2NIMChatroomInfo chatroomInfo = chatroomClient.getChatroomInfo();
iOS
objective-c[[V2NIMChatroomClient getInstance:instanceId] getChatroomInfo];
macOS/Windows
cppauto chatroomInfo = chatroomClient.getChatroomInfo();
Web/uni-app/小程序
typescriptconst chatroomInfo = chatroom.getChatroomInfo()
Harmony
typescriptconst client: V2NIMChatroomClient = this.getInstance(instanceId)
const ret = client.getChatroomInfo()
修改聊天室资料信息
使用前提
在使用以下 V2NIMChatroomService
类中的 API 前,需要先调用 V2NIMChatroomClient#getChatroomService
方法获取 V2NIMChatroomService
类。
实现方式
通过调用 V2NIMChatroomService.updateChatroomInfo
方法修改聊天室资料信息。
支持设置修改资料后是否通知,若设置通知,修改成功后聊天室中所有成员会收到类型为V2NIMChatroomMessageNotificationType.V2NIM_CHATROOM_MESSAGE_NOTIFICATION_TYPE_ROOM_INFO_UPDATED(6)
的通知消息。
仅聊天室创建者或管理员具有修改聊天室资料信息的权限。
- 参数说明
Android
参数名称 | 类型 | 是否必填 | 默认值 | 描述 |
---|---|---|---|---|
updateParams |
V2NIMChatroomUpdateParams |
是 | - | 聊天室信息更新参数 |
antispamConfig |
V2NIMAntispamConfig |
否 | null | 易盾反垃圾相关配置。 |
success |
V2NIMSuccessCallback |
是 | - | 更新成功回调 |
failure |
V2NIMFailureCallback |
是 | - | 更新失败回调,返回错误码。 |
iOS
参数名称 | 类型 | 是否必填 | 默认值 | 描述 |
---|---|---|---|---|
updateParams |
V2NIMChatroomUpdateParams |
是 | - | 聊天室信息更新参数 |
antispamConfig |
V2NIMAntispamConfig |
否 | null | 易盾反垃圾相关配置。 |
success |
V2NIMSuccessCallback |
是 | - | 更新成功回调 |
failure |
V2NIMFailureCallback |
是 | - | 更新失败回调,返回错误码。 |
macOS/Windows
参数名称 | 类型 | 是否必填 | 默认值 | 描述 |
---|---|---|---|---|
updateParams |
V2NIMChatroomUpdateParams |
是 | - | 聊天室信息更新参数 |
antispamConfig |
V2NIMAntispamConfig |
否 | null | 易盾反垃圾相关配置。 |
success |
V2NIMSuccessCallback |
是 | - | 更新成功回调 |
failure |
V2NIMFailureCallback |
是 | - | 更新失败回调,返回错误码。 |
Web/uni-app/小程序
参数名称 | 类型 | 是否必填 | 默认值 | 描述 |
---|---|---|---|---|
updateParams |
V2NIMChatroomUpdateParams |
是 | - | 聊天室信息更新参数 |
antispamConfig |
V2NIMAntispamConfig |
否 | null | 易盾反垃圾相关配置。 |
Harmony
参数名称 | 类型 | 是否必填 | 默认值 | 描述 |
---|---|---|---|---|
updateParams |
V2NIMChatroomUpdateParams |
是 | - | 聊天室信息更新参数 |
antispamConfig |
V2NIMAntispamConfig |
否 | null | 易盾反垃圾相关配置。 |
V2NIMChatroomUpdateParams
参数说明:
名称 | 类型 | 是否必填 | 描述 |
---|---|---|---|
roomName |
String | 否 | 聊天室名称。设置为空表示不更新该字段,不可设置为 "",否则返回参数错误。 |
announcement |
String | 否 | 聊天室公告。设置为空表示不更新该字段。 |
liveUrl |
String | 否 | 视频直播拉流地址。设置为空表示不更新该字段。 |
serverExtension |
String | 否 | 聊天室服务端扩展字段。必须为 JSON 格式封装,长度上限为 4096 字节,多端同步。 设置为空表示不更新该字段。 |
notificationEnabled |
boolean | 否,默认 true | 操作后是否需要通知 |
notificationExtension |
String | 否 | 聊天室信息变更后通知的扩展字段 |
- 示例代码
Android
java// 通过实例ID获取聊天室实例
V2NIMChatroomClient v2ChatroomClient = V2NIMChatroomClient.getInstance(instanceId);
V2NIMChatroomService v2ChatroomService = v2ChatroomClient.getChatroomService();
V2NIMChatroomUpdateParams updateParams = new V2NIMChatroomUpdateParams();
// 设置聊天室名称
updateParams.setRoomName("xxx");
// 设置聊天室公告
updateParams.setAnnouncement("xxx");
// 设置聊天室扩展字段
updateParams.setServerExtension("xxx");
// 设置聊天室直播地址
updateParams.setLiveUrl("xxx");
// 以上四个字段至少需要设置一个,否则会返回参数错误
// 设置是否需要通知
updateParams.setNotificationEnabled(true);
// 设置本次操作生成的通知中的扩展字段
updateParams.setNotificationExtension("xxx");
// 反垃圾配置,可不传
V2NIMAntispamConfig antispamConfig = new V2NIMAntispamConfig();
v2ChatroomService.updateChatroomInfo(updateParams, antispamConfig, new V2NIMSuccessCallback<Void>() {
@Override
public void onSuccess(Void unused) {
// 更新成功
}
}, new V2NIMFailureCallback() {
@Override
public void onFailure(V2NIMError error) {
// 更新失败
}
});
iOS
objective-c// 通过实例 ID 获取聊天室实例
id <V2NIMChatroomService> service = [[V2NIMChatroomClient getInstance:1] getChatroomService];
V2NIMChatroomUpdateParams *updateParams = [[V2NIMChatroomUpdateParams alloc] init];
// 设置聊天室名称
updateParams.roomName = @"xxx";
// 设置聊天室公告
updateParams.announcement = @"xxx";
// 设置聊天室扩展字段
updateParams.serverExtension = @"xxx";
// 设置聊天室直播地址
updateParams.liveUrl = @"xxx";
// 以上四个字段至少需要设置一个,否则会返回参数错误
// 设置是否需要通知
updateParams.notificationEnabled = true;
// 设置本次操作生成的通知中的扩展字段
updateParams.notificationExtension = @"xxx";
// 反垃圾配置,可不传
V2NIMAntispamConfig *antispamConfig = [[V2NIMAntispamConfig alloc] init];
[service updateChatroomInfo:updateParams
antispamConfig:antispamConfig
success:^()
{
// 设置成功
}
failure:^(V2NIMError *error)
{
// 设置失败
}];
macOS/Windows
cppV2NIMChatroomUpdateParams updateParams;
updateParams.roomName = "roomName";
V2NIMAntispamConfig antispamConfig;
chatroomService.updateChatroomInfo(
updateParams,
antispamConfig,
[]() {
// update chatroom info succeeded
},
[](V2NIMError error) {
// update chatroom info failed, handle error
});
Web/uni-app/小程序
typescriptawait chatroom.V2NIMChatroomService.updateChatroomInfo(
{
roomName: 'name',
annoucement: 'announcement',
serverExtension: 'serverExtension',
notificationEnabled: true,
notificationExtension: 'notificationExtension'
}
)
Harmony
typescriptawait this.chatroomClient.chatroomService.updateChatroomInfo(
{
roomName: 'name',
annoucement: 'announcement',
serverExtension: 'serverExtension',
notificationEnabled: true,
notificationExtension: 'notificationExtension'
}
)
此文档是否对你有帮助?