Android

服务器管理

更新时间: 2024/09/10 13:54:04

NIM SDK 的 QChatServerService 类提供管理服务器的相关方法,支持圈组服务器的创建、修改和删除。

前提条件

根据本文操作前,请确保您已经完成以下操作:

使用限制

单个用户的服务器的数量上限(包括自己创建的和加入的)默认为 100 个。若需要扩展上限,可在 网易云信控制台 配置圈组子功能项(单个用户 server 数),具体请参考 开通和配置圈组功能

API 调用时序

下图中,订阅 相关说明参考 圈组订阅机制成员加入服务器 相关说明参考 服务器成员管理

uml diagram

创建服务器

调用 createServer 方法可创建一个服务器。

示例代码:

JavaQChatCreateServerParam param = new QChatCreateServerParam("测试");
QChatAntiSpamConfig antiSpamConfig = new QChatAntiSpamConfig("用户配置的对某些资料内容另外的反垃圾的业务 ID");
param.setAntiSpamBusinessId(antiSpamConfig);
NIMClient.getService(QChatServerService.class).createServer(param).setCallback(
        new RequestCallback<QChatCreateServerResult>() {
            @Override
            public void onSuccess(QChatCreateServerResult result) {
                // 创建成功
                QChatServer server = result.getServer();
            }

            @Override
            public void onFailed(int code) {
                // 创建失败,返回错误 code
            }

            @Override
            public void onException(Throwable exception) {
                // 创建异常
                     }
        });

上述示例代码中的 antiSpamConfig 为圈组内容审核配置,详情请参考 圈组内容审核

修改服务器

调用 updateServer 方法可修改服务器的配置信息,包括服务器名称、服务器图标、服务器自定义扩展、服务器邀请模式和服务器申请模式等。

调用该方法需要拥有 管理服务器 的权限(QChatRoleResource.MANAGE_SERVER)。权限通过身份组进行配置和管理,具体请参考 身份组概述 及其他身份组相关文档。

示例代码:

JavaQChatUpdateServerParam param = new QChatUpdateServerParam(944335L);
param.setName("修改 Server 名称");
QChatAntiSpamConfig antiSpamConfig = new QChatAntiSpamConfig("用户配置的对某些资料内容另外的反垃圾的业务 ID");
param.setAntiSpamBusinessId(antiSpamConfig);
NIMClient.getService(QChatServerService.class).updateServer(param).setCallback(
        new RequestCallback<QChatUpdateServerResult>() {
            @Override
            public void onSuccess(QChatUpdateServerResult result) {
                // 修改 Server 信息成功
                QChatServer server = result.getServer();
            }

            @Override
            public void onFailed(int code) {
                // 修改 Server 信息失败,返回错误 code
            }

            @Override
            public void onException(Throwable exception) {
                // 修改 Server 信息异常
            }
        });

删除服务器

服务器创建者可调用 deleteServer 方法将自己创建的某个服务器删除。

仅服务器创建者可删除服务器。

示例代码:

JavaNIMClient.getService(QChatServerService.class).deleteServer(new QChatDeleteServerParam(944335L)).setCallback(
        new RequestCallback<Void>() {
            @Override
            public void onSuccess(Void result) {
                // 删除 Server 成功
            }

            @Override
            public void onFailed(int code) {
                // 删除 Server 失败,返回错误 code
            }

            @Override
            public void onException(Throwable exception) {
                // 删除 Server 异常
            }
        });

查询服务器列表

分页查询

用户登录圈组后,如果想要获取当前圈组内已有的服务器,可调用 getServersByPage 方法,通过时间戳和查询数量分页查询服务器列表。调用时可通过 Future<NIMResult<QChatGetServersByPageResult>> 可设置回调函数,监听操作结果。如果调用成功,回调返回查询到的服务器列表。

示例代码:

Java//当前时间往前查最多 100 条 Server 信息
NIMClient.getService(QChatServerService.class).getServersByPage(new QChatGetServersByPageParam(System.currentTimeMillis(),100)).setCallback(
        new RequestCallback<QChatGetServersByPageResult>() {
            @Override
            public void onSuccess(QChatGetServersByPageResult result) {
                // 查询 Server 信息成功
                List<QChatServer> servers = result.getServers();
            }

            @Override
            public void onFailed(int code) {
                // 查询 Server 信息失败,返回错误 code
            }

            @Override
            public void onException(Throwable exception) {
                // 查询 Server 信息异常
            }
        });

根据 ID 查询

用户登录圈组后,如果需要检索服务器,可调用 getServers 方法,根据服务器的 ID 查询对应的服务器列表。调用时可通过 Future<NIMResult<QChatGetServersResult>> 可设置回调函数,监听操作结果。如果调用成功,回调返回查询到的服务器列表。

示例代码:

JavaList<Long> serviceIds = new ArrayList<>();
serviceIds.add(944334L);
serviceIds.add(944335L);
NIMClient.getService(QChatServerService.class).getServers(new QChatGetServersParam(serviceIds)).setCallback(
        new RequestCallback<QChatGetServersResult>() {
            @Override
            public void onSuccess(QChatGetServersResult result) {
                // 查询 Server 信息成功
                List<QChatServer> servers = result.getServers();
            }

            @Override
            public void onFailed(int code) {
                // 查询 Server 信息失败,返回错误 code
            }

            @Override
            public void onException(Throwable exception) {
                // 查询 Server 信息异常
            }
        });

系统通知

圈组系统通知的类型在 QChatSystemNotificationType 枚举中定义,与服务器管理相关的内置系统通知类型如下:

枚举值 说明
SERVER_CREATE 创建服务器
SERVER_REMOVE 删除服务器
SERVER_UPDATE 修改服务器信息

更多圈组系统通知相关说明,请参考 圈组系统通知相关

内容审核

创建或修改服务器时,如果通过 setAntiSpamBusinessId 方法配置了安全通的业务 ID,那么网易云信将会对服务器资料进行 安全通 内容审核。antiSpamBusinessId 代表安全通默认内容审核业务以外的自定义内容审核的业务 ID。如需新增自定义内容审核,请联系商务经理进行相关配置,然后前往网易云信控制台的安全通配置界面获取该业务 ID。

更多圈组内容审核相关说明,参考 圈组内容审核

此文档是否对你有帮助?
有帮助
去反馈
  • 前提条件
  • 使用限制
  • API 调用时序
  • 创建服务器
  • 修改服务器
  • 删除服务器
  • 查询服务器列表
  • 分页查询
  • 根据 ID 查询
  • 系统通知
  • 内容审核