聊天室管理
更新时间: 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
:聊天室资料信息更新回调,返回更新后的聊天室信息。聊天室内所有成员均会收到该回调。 -
示例代码如下:
Androidjava
V2NIMChatroomClient v2ChatroomClient = V2NIMChatroomClient.getInstance(instanceId); V2NIMChatroomService v2ChatroomService = v2ChatroomClient.getChatroomService(); V2NIMChatroomListener listener = new V2NIMChatroomListener() { @Override public void onChatroomInfoUpdated(V2NIMChatroomInfo chatroom) { } }; v2ChatroomService.addChatroomListener(listener);
iOSobjective-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/Windowscpp
V2NIMChatroomListener listener; listener.onChatroomInfoUpdated = [](V2NIMChatroomInfo chatroomInfo) { // handle chatroom info updated }; chatroomService.addChatroomListener(listener);
Web/uni-app/小程序typescript
chatroom.V2NIMChatroomService.on('onChatroomInfoUpdated', function (chatroomInfo: V2NIMChatroomInfo){})
Node.js/Electrontypescript
chatroom.chatroomService.on('chatroomInfoUpdated', function (chatroomInfo: V2NIMChatroomInfo){})
HarmonyOStypescript
chatroom.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 |
修改聊天室信息 |
此文档是否对你有帮助?