聊天室管理

更新时间: 2025/03/31 18:39:37

网易云信 IM 支持聊天室管理功能,包括获取和维护聊天室资料、坐标、标签等信息。

本文介绍如何通过网易云信即时通讯 SDK(NetEase IM SDK,简称 NIM SDK)管理聊天室。

支持平台

本文内容适用的开发平台或框架如下表所示,涉及的接口请参考下文 相关接口 章节:

安卓 iOS macOS/Windows Web/uni-app/小程序 Node.js/Electron 鸿蒙 Flutter
✔️️️️️ ✔️️️️️ ✔️️️️️ ✔️️️️️ ✔️️️️️ ✔️️️️️ ✔️

前提条件

根据本文操作前,请确保您已实现 聊天室登录

聊天室相关事件监听

在进行聊天室相关操作前,您可以先注册监听聊天室相关事件。监听后,在进行聊天室管理操作后,会收到对应的通知。

  • 相关回调onChatroomInfoUpdated 聊天室资料信息更新回调,返回更新后的聊天室信息。聊天室内所有成员均会收到该回调。

  • 示例代码如下

    安卓
    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
    C++V2NIMChatroomListener listener;
    listener.onChatroomInfoUpdated = [](V2NIMChatroomInfo chatroomInfo) {
        // handle chatroom info updated
    };
    chatroomService.addChatroomListener(listener);
    
    Web/uni-app/小程序
    TypeScriptchatroom.V2NIMChatroomService.on('onChatroomInfoUpdated', function (chatroomInfo: V2NIMChatroomInfo){})
    
    Node.js/Electron
    TypeScriptchatroom.chatroomService.on('chatroomInfoUpdated', function (chatroomInfo: V2NIMChatroomInfo){})
    
    鸿蒙
    TypeScriptchatroom.chatroomService.on('onChatroomInfoUpdated', (chatroomInfo: V2NIMChatroomInfo) => {})
    
    Flutter
    Dart//首先添加监听
    await chatroomClient?.getChatroomService().addChatroomListener();
    //然后设置监听
    chatroomClient!.getChatroomService().onChatroomInfoUpdated.listen((event) {
    //todo something
    });
    

获取聊天室信息

通过调用 getChatroomInfo 方法获取聊天室信息。

NIM SDK 不支持聊天室信息缓存,您需要自行实现数据缓存。

示例代码如下:

安卓
JavaV2NIMChatroomInfo chatroomInfo = chatroomClient.getChatroomInfo();
iOS
Objective-C[[V2NIMChatroomClient getInstance:instanceId] getChatroomInfo];
macOS/Windows
C++auto chatroomInfo = chatroomClient.getChatroomInfo();
Web/uni-app/小程序
TypeScriptconst chatroomInfo = chatroom.getChatroomInfo()
Node.js/Electron
TypeScriptconst chatroomInfo = chatroomClient.getChatroomInfo()
鸿蒙
TypeScriptconst client: V2NIMChatroomClient = this.getInstance(instanceId)
const ret = client.getChatroomInfo()
Flutter
Dartfinal chatroomInfoResult = await chatroomClient?.getChatroomInfo();

修改聊天室资料信息

使用前提

在使用聊天室服务中的 API 前,需要先调用 getChatroomService 方法获取聊天室服务类。

实现方式

通过调用 updateChatroomInfo 方法修改聊天室资料信息。

支持设置修改资料后是否通知,若设置通知,修改成功后聊天室中所有成员会收到类型为 ROOM_INFO_UPDATED 的通知消息。

仅聊天室创建者或管理员具有修改聊天室资料信息的权限。

示例代码如下:

安卓
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
C++V2NIMChatroomUpdateParams 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'
    }
)
Node.js/Electron
TypeScriptawait chatroomService.updateChatroomInfo({
    roomName: 'new room name'
}, {})
鸿蒙
TypeScriptawait this.chatroomClient.chatroomService.updateChatroomInfo(
    {
        roomName: 'name',
        annoucement: 'announcement',
        serverExtension: 'serverExtension',
        notificationEnabled: true,
        notificationExtension: 'notificationExtension'
    }
)
Flutter
Dartfinal chatroomService = chatroomClient?.getChatroomService();
final params = V2NIMChatroomUpdateParams();
var result = await chatroomService?.updateChatroomInfo(params,null);

相关接口

安卓/iOS/macOS/Windows
API 说明
addChatroomListener 注册聊天室监听器
removeChatroomListener 取消注册聊天室监听器
V2NIMChatroomInfo 聊天室信息
V2NIMChatroomClient.getChatroomInfo 获取聊天室信息
V2NIMChatroomClient.getChatroomService 获取聊天室服务类
V2NIMChatroomService.updateChatroomInfo 修改聊天室信息
Web/uni-app/小程序/Node.js/Electron/鸿蒙
API 说明
on("EventName") 注册聊天室监听器
off("EventName") 取消注册聊天室监听器
V2NIMChatroomInfo 聊天室信息
V2NIMChatroomClient.getChatroomInfo 获取聊天室信息
V2NIMChatroomClient.getChatroomService 获取聊天室服务类
V2NIMChatroomService.updateChatroomInfo 修改聊天室信息
Flutter
API 说明
addChatroomListener 注册聊天室监听器
removeChatroomListener 取消注册聊天室监听器
V2NIMChatroomInfo 聊天室信息
V2NIMChatroomClient.getChatroomInfo 获取聊天室信息
V2NIMChatroomClient.getChatroomService 获取聊天室服务类
V2NIMChatroomService.updateChatroomInfo 修改聊天室信息
此文档是否对你有帮助?
有帮助
去反馈
  • 支持平台
  • 前提条件
  • 聊天室相关事件监听
  • 获取聊天室信息
  • 修改聊天室资料信息
  • 使用前提
  • 实现方式
  • 相关接口