服务器管理
更新时间: 2024/11/21 15:35:16
NIM SDK 的NIMQChatServerManager协议提供管理服务器的相关方法,支持圈组服务器的创建、修改、删除和查询。
前提条件
使用限制
单个用户的服务器的数量上限(包括自己创建的和加入的)默认为 100 个。
若需要扩展上限,可在控制台配置圈组子功能项(单个用户 server 数),具体请参考开通和配置圈组功能。
实现方法
创建服务器
调用createServer:completion:方法可创建一个服务器。
入参说明见NIMQChatCreateServerParam。
示例代码如下:
NIMQChatCreateServerParam *param = [[NIMQChatCreateServerParam alloc] init];
param.name = @"云信Server";
//反垃圾业务id
param.antispamBusinessId = @"{\"picbid\": \"542364432634d6\"}";
id <NIMQChatServerManager> qchatServerManager = [[NIMSDK sharedSDK] qchatServerManager];
[qchatServerManager createServer:param
completion:^(NSError *error, NIMQChatCreateServerResult *result) {
// your code
}];
上述示例代码中的antispamBusinessId为圈组内容审核的配置项,详情请参见圈组内容审核。
修改服务器
调用 updateServer:completion:方法可修改服务器的配置信息,包括服务器名称、服务器图标、服务器自定义扩展、服务器邀请模式和服务器申请模式等。
入参说明见NIMQChatUpdateServerParam。
调用该方法需要拥有“管理服务器”的权限(NIMQChatPermissionType枚举中的NIMQChatPermissionTypeManageServer)。权限通过身份组进行配置和管理,具体请参见身份组概述及其他身份组相关文档。
示例代码如下:
NIMQChatUpdateServerParam *param = [[NIMQChatUpdateServerParam alloc] init];
param.serverId = 123456;
param.name = @"更新后的名称";
//反垃圾业务id
param.antispamBusinessId = @"{\"picbid\": \"542364432634d6\"}";
id <NIMQChatServerManager> qchatServerManager = [[NIMSDK sharedSDK] qchatServerManager];
[qchatServerManager updateServer:param
completion:^(NSError * error, NIMQChatUpdateServerResult * result) {
// your code
}];
删除服务器
服务器创建者可调用deleteServer:completion:方法将自己创建的某个服务器删除。
仅服务器创建者可删除服务器。
示例代码如下:
NIMQChatDeleteServerParam *param = [[NIMQChatDeleteServerParam alloc] init];
param.serverId = 123456;
id <NIMQChatServerManager> qchatServerManager = [[NIMSDK sharedSDK] qchatServerManager];
[qchatServerManager deleteServer:param
completion:^(NSError *error) {
// your code
}];
查询服务器
分页查询服务器列表
用户登录圈组后,如果想要获取当前圈组内已有的服务器,可调用getServersByPage:completion:方法,通过时间戳和查询数量分页查询服务器列表。
入参说明见NIMQChatGetServersByPageParam调用时可通过NIMQChatGetServersByPageHandler可设置回调函数,监听操作结果。如果调用成功,回调返回查询到的服务器列表。
示例代码如下:
NIMQChatGetServersByPageParam *param = [[NIMQChatGetServersByPageParam alloc] init];
// 传0拉取最新的Server
param.timeTag = 0;
param.limit = 20;
id <NIMQChatServerManager> qchatServerManager = [[NIMSDK sharedSDK] qchatServerManager];
[qchatServerManager getServersByPage:param
completion:^(NSError * error, NIMQChatGetServersByPageResult * result) {
// your code
}];
根据服务器ID查询服务器列表
用户登录圈组后,如果需要检索服务器,可调用getServers:completion:方法,根据服务器的 ID 查询对应的服务器列表。调用时可通过NIMQChatGetServersHandler可设置回调函数,监听操作结果。如果调用成功,回调返回查询到的服务器列表。
示例代码如下:
NIMQChatGetServersParam *param = [[NIMQChatGetServersParam alloc] init];
param.serverIds = @[@(123456), @(123457), @(123458)];
param.antispamBusinessId = @"{\"picbid\": \"804265342b7425324f53425c343454\", \"txtbid\": \"804265342b7425324f53425c343454\"}";
id <NIMQChatServerManager> qchatServerManager = [[NIMSDK sharedSDK] qchatServerManager];
[qchatServerManager getServers:param
completion:^(NSError * error, NIMQChatGetServersResult * result) {
// your code
}];
相关参考
相关系统通知
圈组系统通知的类型在NIMQChatSystemNotificationType枚举中定义,与服务器管理相关的内置系统通知类型如下:
| 枚举值 | 说明 |
|---|---|
NIMQChatSystemNotificationTypeServerCreate |
创建服务器 |
NIMQChatSystemNotificationTypeServerRemove |
删除服务器 |
NIMQChatSystemNotificationTypeServerUpdate |
修改服务器信息 |
更多圈组系统通知相关说明,请参见圈组系统通知相关。
API 调用时序
sequenceDiagram
note over NIM SDK: 初始化 SDK 并登录 IM
note over NIM SDK: 注册监听并登录圈组
创建者 ->> NIM SDK: 监听圈组系统通知<br>(onRecvSystemNotification:)
普通成员 ->> NIM SDK: 监听圈组系统通知<br>(onRecvSystemNotification:)
创建者 ->> NIM SDK: 登录圈组<br>(login:completion:)
普通成员 ->> NIM SDK: 登录圈组<br>(login:completion:)
note over NIM SDK: 创建服务器
创建者 ->> NIM SDK: 创建服务器<br>(createServer:completion:)
NIM SDK ->> 创建者: 服务器创建成功通知<br>(NIMQChatSystemNotificationTypeServerCreate)
note over NIM SDK: 成员加入服务器
note left of 普通成员: 此处省略具体调用方法,具体见<br>服务器成员管理文档
note over NIM SDK: 成员订阅服务器
普通成员 ->> NIM SDK: 订阅服务器<br>(subscribeServer:completion:)
note left of 普通成员: 普通成员需订阅服务器<br>才能收到服务器相关系统通知
note over NIM SDK: 修改服务器
创建者 ->> NIM SDK: 修改服务器<br>(updateServer:completion:)
NIM SDK ->> 创建者: 服务器信息修改成功通知<br>(NIMQChatSystemNotificationTypeServerUpdate)
NIM SDK ->> 普通成员: 服务器信息修改成功通知<br>(NIMQChatSystemNotificationTypeServerUpdate)
note left of 普通成员: 在线且订阅服务器才能收到该通知
note over NIM SDK: 删除服务器
创建者 ->> NIM SDK: 删除服务器<br>(deleteServer:completion:)
NIM SDK ->> 创建者: 服务器删除成功通知<br>(NIMQChatSystemNotificationTypeServerRemove)
NIM SDK ->> 普通成员: 服务器删除成功通知<br>(NIMQChatSystemNotificationTypeServerRemove)
note left of 普通成员: 在线且订阅服务器才能收到该通知
上图中:





