聊天室管理

更新时间: 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'    
    }
)
此文档是否对你有帮助?
有帮助
去反馈
  • 前提条件
  • 聊天室相关事件监听
  • 获取聊天室信息
  • 修改聊天室资料信息
  • 使用前提
  • 实现方式