聊天室管理

更新时间: 2024/11/20 14:24:34

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

本文介绍如何通过 NetEase IM SDK(以下简称 NIM SDK)管理聊天室。

支持平台

本文内容适用的开发平台或框架如下表所示:

Android iOS macOS/Windows Web/uni-app/小程序 Node.js/Electron HarmonyOS Flutter
✔️️️️ ✔️️️️ ✔️️️️ ✔️️️️ ✔️️️️ ✔️️️️ -

前提条件

实现聊天室登录

聊天室相关事件监听

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

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

  • 示例代码如下:

    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){})
    
    Node.js/Electron
    typescriptchatroom.chatroomService.on('chatroomInfoUpdated', function (chatroomInfo: V2NIMChatroomInfo){})
    
    HarmonyOS
    typescriptchatroom.chatroomService.on('onChatroomInfoUpdated', (chatroomInfo: V2NIMChatroomInfo) => {})
    

获取聊天室信息

通过调用 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()
Node.js/Electron
typescriptconst chatroomInfo = chatroomClient.getChatroomInfo()
HarmonyOS
typescriptconst client: V2NIMChatroomClient = this.getInstance(instanceId)
const ret = client.getChatroomInfo()

修改聊天室资料信息

使用前提

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

实现方式

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

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

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

示例代码如下:

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'    
    }
)
Node.js/Electron
typescriptawait chatroomService.updateChatroomInfo({
    roomName: 'new room name'
}, {})
HarmonyOS
typescriptawait this.chatroomClient.chatroomService.updateChatroomInfo(
    {
        roomName: 'name',
        annoucement: 'announcement',
        serverExtension: 'serverExtension',
        notificationEnabled: true,
        notificationExtension: 'notificationExtension'    
    }
)

涉及接口

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