身份组管理(本文不再维护)

更新时间: 2023/07/21 06:54:54

本文已不再维护,请前往身份组概述查看身份组相关文档。

身份组管理

Web SDK最大可以设置的整型是9007199254740991。如果超过,接收方是Web SDK时会溢出。

身份组权限类型

权限分为服务器专有权限,服务器和频道都有的权限。

objc// 权限
typedef NS_ENUM(NSInteger, NIMQChatPermissionType) {
    // 管理服务器。修改服务器
    NIMQChatPermissionTypeManageServer             =       1,
   // 管理频道,server和channel都有
    NIMQChatPermissionTypeManageChannel            =       2,
   // 管理角色的权限,server和channel都有
    NIMQChatPermissionTypeManageRole               =       3,
   // 发送消息,server和channel都有
    NIMQChatPermissionTypeSendMsg                  =       4,
    // 修改自己在该server的成员信息,仅server有
    NIMQChatPermissionTypeModifySelfInfo           =       5,
   // 邀请他人进入server的,仅server有
    NIMQChatPermissionTypeInviteToServer           =       6,
   // 踢除他人的权限,仅server有
    NIMQChatPermissionTypeKickOthersInServer       =       7,
   // 修改他人在该server的服务器成员信息,仅server有
    NIMQChatPermissionTypeModifyOthersInfoInServer =       8,
   // 撤回他人消息的权限,server和channel都有
    NIMQChatPermissionTypeRevokeMsg                =       9,
   // 删除他人消息的权限,server和channel都有
    NIMQChatPermissionTypeDeleteOtherMsg           =       10,
   //  @ 他人的权限,server和channel都有
    NIMQChatPermissionTypeRemindOther              =       11,
   // @ everyone的权限,server和channel都有
    NIMQChatPermissionTypeRemindAll                =       12,
   // 管理黑白名单的权限,server和channel都有
    NIMQChatPermissionTypeManageBlackWhiteList     =       13,
   // 封禁他人的权限,仅server有,允许成员永久封禁其他成员访问此服务器
    NIMQChatPermissionTypeManageBanServerMember     =       14,
    // 实时互动频道:连接的权限
    NIMQChatPermissionTypeRTCChannelConnect  = 15,
    // 实时互动频道:断开他人连接的权限
    NIMQChatPermissionTypeRTCChannelDisconnectOther  = 16,
    // 实时互动频道:开启麦克风的权限
    NIMQChatPermissionTypeRTCChannelOpenMicrophone  = 17,
    // 实时互动频道:开启摄像头的权限
    NIMQChatPermissionTypeRTCChannelOpenCamera  = 18,
    // 实时互动频道:开启/关闭他人麦克风的权限
    NIMQChatPermissionTypeRTCChannelOpenCloseOtherMicrophone  = 19,
    // 实时互动频道:开启/关闭他人摄像头的权限
    NIMQChatPermissionTypeRTCChannelOpenCloseOtherCamera  = 20,
    // 实时互动频道:开启/关闭全员麦克风的权限
    NIMQChatPermissionTypeRTCChannelOpenCloseEveryOneMicrophone  = 21,
    // 实时互动频道:开启/关闭全员摄像头的权限
    NIMQChatPermissionTypeRTCChannelOpenCloseEveryOneCamera  = 22,
    // 实时互动频道:打开自己共享屏幕的权限
    NIMQChatPermissionTypeRTCChannelOpenMyShareScreen  = 23,
    // 实时互动频道:关闭他人共享屏幕的权限
    NIMQChatPermissionTypeRTCChannelCloseOtherShareScreen  = 24,
    // 申请邀请管理权限
    NIMQChatPermissionTypeHandleServerApply  = 25,
    // 加入服务器申请邀请历史查看权限,有这个权限才可以查询server级别的申请/邀请记录
    NIMQChatPermissionTypeQueryServerInviteApplyHistory  = 26
};

9.3.0 版本新增实时互动频道相关资源权限、申请邀请管理权限以及申请邀请历史查看权限类型。

各身份组中会有各权限的状态,每种权限对应状态的类 NIMQChatPermissionStatusInfo。

  • NIMQChatPermissionStatusInfo 定义
objc@interface NIMQChatPermissionStatusInfo : NSObject
/**
 * 权限
 */
@property (nonatomic, assign) NIMQChatPermissionType type;
/**
 * 权限状态
 */
@property (nonatomic, assign) NIMQChatPermissionStatus status;

@end

创建服务器身份组

服务器创建时会自动创建“@所有人”身份组(type == NIMQChatRoleTypeEveryOne),通过 createServerRole 接口可以创建自定义身份组(type == NIMQChatRoleTypeCustom),创建成功后,可以从 NIMQChatCreateServerRoleResult 获得新建的服务器 NIMQChatServerRole。其中包含各权限状态 auths。

@所有人身份组的权限配置,只有服务器创建者可修改。

objc/**
 * 该身份组各资源的权限状态
 */
@property (nonatomic, copy) NSArray <NIMQChatPermissionStatusInfo *> *auths;
  • 接口原型
objc/**
 * 创建服务器身份组
 *
 * @param param 传入参数
 * @param completion 结果回调
 */
- (void)createServerRole:(NIMQChatCreateServerRoleParam *)param
                  completion:(nullable NIMQChatCreateServerRoleHandler)completion;
  • 代码示例
objcid<NIMQChatRoleManager> qchatRoleManager = [[NIMSDK sharedSDK] qchatRoleManager];
NIMQChatCreateServerRoleParam *param = [[NIMQChatCreateServerRoleParam alloc] init];
param.serverId = 123456;
param.type = NIMQChatRoleTypeCustom;
param.name = @"云信服务器自定义身份组";
//反垃圾业务id
param.antispamBusinessId = @"{\"picbid\": \"804265342b7425324f53425c343454\", \"txtbid\": \"804265342b7425324f53425c343454\"}";
[qchatRoleManager createServerRole:param
              completion:^(NSError *__nullable error, NIMQChatServerRole *__nullable result) {
    // your code
}];

删除服务器身份组

非 everyone 身份组可以通过 deleteServerRole 接口删除。该接口需要 NIMQChatPermissionTypeManageRole 权限。

  • 接口原型
objc/**
 * 删除服务器身份组
 *
 * @param param 传入参数
 * @param completion 结果回调
 */
- (void)deleteServerRole:(NIMQChatDeleteServerRoleParam *)param
                  completion:(nullable NIMQChatDeleteServerRoleHandler)completion;
  • 代码示例
objcid<NIMQChatRoleManager> qchatRoleManager = [[NIMSDK sharedSDK] qchatRoleManager];
    NIMQChatDeleteServerRoleParam *param = [[NIMQChatDeleteServerRoleParam alloc] init];
    param.serverId = 123456;
    param.roleId = 111;
    [qchatRoleManager deleteServerRole:param
                  completion:^(NSError *__nullable error) {
        // your code
    }];

更新服务器身份组

调用 updateServerRole 接口可以修改服务器身份组的 nameicon、extresourceAuthspriority` 字段。

  • 该接口需要 NIMQChatPermissionTypeManageRole 权限。
  • 该方法仅支持更新服务器的自定义身份组,即NIMQChatRoleTypeNIMQChatRoleTypeCustom的身份组。 创建服务器时默认生成的 @everyone 身份组,即NIMQChatRoleTypeNIMQChatRoleTypeEveryOne 的身份组,不支持更新身份组信息,仅支持修改权限。 如果调用该方法更新 @everyone 身份组的信息(身份组名称、图标、自定义扩展和优先级),将报错(错误码 403)。
  • 接口原型
objc/**
 * 更新服务器身份组
 *
 * @param param 传入参数
 * @param completion 结果回调
 */
- (void)updateServerRole:(NIMQChatUpdateServerRoleParam *)param
                  completion:(nullable NIMQChatUpdateServerRoleHandler)completion;
  • 代码示例
objcid<NIMQChatRoleManager> qchatRoleManager = [[NIMSDK sharedSDK] qchatRoleManager];
NIMQChatUpdateServerRoleParam *param = [[NIMQChatUpdateServerRoleParam alloc] init];
param.serverId = 123456;
param.roleId = 111;
param.name = @"更新后的服务器身份组名称";
// 更新优先级需要注意已经有的优先级
param.priority = @(10);
//反垃圾业务id
param.antispamBusinessId = @"{\"picbid\": \"804265342b7425324f53425c343454\", \"txtbid\": \"804265342b7425324f53425c343454\"}";
[qchatRoleManager updateServerRole:param
              completion:^(NSError *__nullable error, NIMQChatServerRole *__nullable result) {
    // your code
}];

获取服务器身份组

getServerRoles 通过分页方式查询服务器身份组列表,查询结果按照 priority 从大到小排序。查询参数中 priority 设为 0,会从最大优先级开始返回,也就是第一页。第一页查询结果还会额外包含 everyone 身份组,放在返回列表的第一项。 注意,参数中channelId字段,为可选字段,如果传了,则只需要有该channel的管理权限即可,否则需要有server的管理权限才能查询。

  • 接口原型
objc/**
 * 获取服务器身份组
 *
 * @param param 传入参数
 * @param completion 结果回调
 */
- (void)getServerRoles:(NIMQChatGetServerRolesParam *)param
                 completion:(nullable NIMQChatGetServerRolesHandler)completion;
  • 代码示例
objcid<NIMQChatRoleManager> qchatRoleManager = [[NIMSDK sharedSDK] qchatRoleManager];
NIMQChatGetServerRolesParam *param = [[NIMQChatGetServerRolesParam alloc] init];
param.serverId = 123456;
param.limit = 20;
param.priority = @(2);
param.channelId = 5423642;
[qchatRoleManager getServerRoles:param
            completion:^(NSError *__nullable error, NIMQChatGetServerRolesResult *__nullable result) {
    // your code
}];

将某身份组加入某频道

默认情况下,频道直接使用服务器身份组来控制权限,通过 addChannelRole 接口可以通过继承某个服务器身份组来新增一个频道身份组。

  • 接口原型
objc/**
 * 将某身份组加入某频道
 *
 * @param param 传入参数
 * @param completion 结果回调
 */
- (void)addChannelRole:(NIMQChatAddChannelRoleParam *)param
                   completion:(nullable NIMQChatAddChannelRoleHandler)completion;
  • 代码示例
objcid<NIMQChatRoleManager> qchatRoleManager = [[NIMSDK sharedSDK] qchatRoleManager];
NIMQChatAddChannelRoleParam *param = [[NIMQChatAddChannelRoleParam alloc] init];
param.serverId = 123456;
param.channelId = 121212;
param.parentRoleId = 111;
[qchatRoleManager addChannelRole:param
            completion:^(NSError *__nullable error, NIMQChatChannelRole *__nullable result) {
    // your code
}];

新创建的频道身份组和被继承的服务器身份组有以下联系:

  • 公开频道的身份组成员等于被继承的服务器身份组成员去掉频道黑名单成员和频道黑名单身份组成员;私密频道的身份组成员是同时存在于频道白名单和被继承的服务器身份组的公共成员,以及同时存在于频道白名单身份组和被继承的服务器身份组的公共成员。
  • 刚创建时两者权限一样。频道身份组刚创建时所有权限都为 INHERIT,和被继承的服务器身份组一样,之后我们可以修改频道身份组,使频道身份组和服务器身份组拥有不一样的权限。
  • 频道身份组的 parentRoleId 等于被继承的服务器身份组的 roleId。 该接口需要 NIMQChatPermissionTypeManageRole 权限。

删除某频道下的某身份组

该接口需要 NIMQChatPermissionTypeManageRole 权限。

  • 接口原型
objc/**
 * 删除某频道下的某身份组
 *
 * @param param 传入参数
 * @param completion 结果回调
 */
- (void)removeChannelRole:(NIMQChatRemoveChannelRoleParam *)param
                   completion:(nullable NIMQChatRemoveChannelRoleHandler)completion;
  • 代码示例
objcid<NIMQChatRoleManager> qchatRoleManager = [[NIMSDK sharedSDK] qchatRoleManager];
NIMQChatRemoveChannelRoleParam *param = [[NIMQChatRemoveChannelRoleParam alloc] init];
param.serverId = 123456;
param.channelId = 121212;
param.roleId = 111;
[qchatRoleManager removeChannelRole:param
               completion:^(NSError *__nullable error) {
    // your code
}];

修改频道下某身份组的权限

该接口需要 NIMQChatPermissionTypeManageRole 权限。

  • 接口原型
objc/**
 * 修改频道下某身份组的权限
 *
 * @param param 传入参数
 * @param completion 结果回调
 */
- (void)updateChannelRole:(NIMQChatUpdateChannelRoleParam *)param
                   completion:(nullable NIMQChatUpdateChannelRoleHandler)completion;
  • 代码示例
objcid<NIMQChatRoleManager> qchatRoleManager = [[NIMSDK sharedSDK] qchatRoleManager];
NIMQChatUpdateChannelRoleParam *param = [[NIMQChatUpdateChannelRoleParam alloc] init];
param.serverId = 123456;
param.channelId = 121212;
param.roleId = 111;
NIMQChatPermissionStatusInfo *info = [[NIMQChatPermissionStatusInfo alloc] init];
info.type = NIMQChatPermissionTypeRemindOther;
info.status = NIMQChatPermissionStatusExtend;
param.commands = @[info];
[qchatRoleManager updateChannelRole:param
               completion:^(NSError *__nullable error, NIMQChatChannelRole *__nullable result) {
    // your code
}];

查询某频道下的身份组信息列表

  • 接口原型
objc/**
 * 查询某频道下的身份组信息列表
 *
 * @param param 传入参数
 * @param completion 结果回调
 */
- (void)getChannelRoles:(NIMQChatGetChannelRolesParam *)param
                  completion:(nullable NIMQChatGetChannelRolesHandler)completion;
  • 代码示例
objcid<NIMQChatRoleManager> qchatRoleManager = [[NIMSDK sharedSDK] qchatRoleManager];
NIMQChatGetChannelRolesParam *param = [[NIMQChatGetChannelRolesParam alloc] init];
param.serverId = 123456;
param.channelId = 121212;
param.timeTag = 0;
param.limit = 20;
[qchatRoleManager getChannelRoles:param
             completion:^(NSError *__nullable error, NIMQChatGetChannelRolesResult *__nullable result) {
    // your code
}];

为某个人定制某频道的权限

频道除了可以通过频道身份组对所有身份组成员进行权限控制,也可以通过 addMemberRole 接口对某个成员的权限进行定制。该接口需要 NIMQChatPermissionTypeManageRole 权限。

  • 接口原型
objc/**
 * 为某个人定制某频道的权限
 *
 * @param param 传入参数
 * @param completion 结果回调
 */
- (void)addMemberRole:(NIMQChatAddMemberRoleParam *)param
                completion:(nullable NIMQChatAddMemberRoleHandler)completion;
  • 代码示例
objcid<NIMQChatRoleManager> qchatRoleManager = [[NIMSDK sharedSDK] qchatRoleManager];
NIMQChatAddMemberRoleParam *param = [[NIMQChatAddMemberRoleParam alloc] init];
param.serverId = 123456;
param.channelId = 121212;
param.accid = @"yunxin1";
[qchatRoleManager addMemberRole:param
           completion:^(NSError *__nullable error, NIMQChatMemberRole *__nullable result) {
    // your code
}];

删除频道下某人的定制权限

该接口需要 NIMQChatPermissionTypeManageRole 权限

  • 接口原型
objc/**
 * 删除频道下某人的定制权限
 *
 * @param param 传入参数
 * @param completion 结果回调
 */
- (void)removeMemberRole:(NIMQChatRemoveMemberRoleParam *)param
                completion:(nullable NIMQChatRemoveMemberRoleHandler)completion;
  • 代码示例
objcid<NIMQChatRoleManager> qchatRoleManager = [[NIMSDK sharedSDK] qchatRoleManager];
NIMQChatRemoveMemberRoleParam *param = [[NIMQChatRemoveMemberRoleParam alloc] init];
param.serverId = 123456;
param.channelId = 121212;
param.accid = @"yunxin1";
[qchatRoleManager removeMemberRole:param
              completion:^(NSError *__nullable error) {
    // your code
}];

修改某人的定制权限

该接口需要 NIMQChatPermissionTypeManageRole 权限

  • 接口原型
objc/**
 * 修改某人的定制权限
 *
 * @param param 传入参数
 * @param completion 结果回调
 */
- (void)updateMemberRole:(NIMQChatUpdateMemberRoleParam *)param
                completion:(nullable NIMQChatUpdateMemberRoleHandler)completion;
  • 代码示例
objcid<NIMQChatRoleManager> qchatRoleManager = [[NIMSDK sharedSDK] qchatRoleManager];
NIMQChatUpdateMemberRoleParam *param = [[NIMQChatUpdateMemberRoleParam alloc] init];
param.serverId = 123456;
param.channelId = 121212;
param.accid = @"yunxin1";
NIMQChatPermissionStatusInfo *info = [[NIMQChatPermissionStatusInfo alloc] init];
info.type = NIMQChatPermissionTypeRemindOther;
info.status = NIMQChatPermissionStatusExtend;
param.commands = @[info];
[qchatRoleManager updateMemberRole:param
              completion:^(NSError *__nullable error, NIMQChatMemberRole *__nullable result) {
    // your code
}];

查询 channel 下人的定制权限

可以通过以下接口分页某 Channel 下的成员定制权限列表

  • 接口原型
objc/**
 * 查询channel下人的定制权限
 *
 * @param param 传入参数
 * @param completion 结果回调
 */
- (void)getMemberRoles:(NIMQChatGetMemberRolesParam *)param
               completion:(nullable NIMQChatGetMemberRolesHandler)completion;

其中 NIMQChatGetMemberRolesParam 需要传入 ServerId、ChannelId、查询锚点时间戳和查询数量限制。

  • 代码示例
objcid<NIMQChatRoleManager> qchatRoleManager = [[NIMSDK sharedSDK] qchatRoleManager];
NIMQChatGetMemberRolesParam *param = [[NIMQChatGetMemberRolesParam alloc] init];
param.serverId = 123456;
param.channelId = 121212;
param.timeTag = 0;
param.limit = 20;
[qchatRoleManager getMemberRoles:param
            completion:^(NSError *__nullable error, NIMQChatGetMemberRolesResult *__nullable result) {
    // your code
}];

将某些人加入某服务器身份组

通过 addMembersToServerRole 新增服务器身份组成员后,继承自该服务器身份组的频道身份组成员也会作相应变化。该接口需要 NIMQChatPermissionTypeManageRole 权限。

  • 接口原型
objc/**
 * 将某些人加入某服务器身份组
 *
 * @param param 传入参数
 * @param completion 结果回调
 */
- (void)addServerRoleMembers:(NIMQChatAddServerRoleMembersParam *)param
                        completion:(nullable NIMQChatAddServerRoleMembersHandler)completion;
  • 代码示例
objcid<NIMQChatRoleManager> qchatRoleManager = [[NIMSDK sharedSDK] qchatRoleManager];
NIMQChatAddServerRoleMembersParam *param = [[NIMQChatAddServerRoleMembersParam alloc] init];
param.serverId = 123456;
param.roleId = 111;
param.accountArray = @[@"yunxin1", @"yunxin2", @"yunxin3"];
[qchatRoleManager addServerRoleMembers:param
                  completion:^(NSError *__nullable error, NIMQChatAddServerRoleMembersResult *__nullable result) {
    // your code
}];

将某些移除某服务器身份组

可通过 removeMembersFromServerRole 删除服务器身份组成员,删除后继承自该服务器身份组的频道身份组成员也会作相应变化。该接口需要 NIMQChatPermissionTypeManageRole 权限。

  • 接口原型
objc/**
 * 将某些人移除某服务器身份组
 *
 * @param param 传入参数
 * @param completion 结果回调
 */
- (void)removeServerRoleMember:(NIMQChatRemoveServerRoleMemberParam *)param
                        completion:(nullable NIMQChatRemoveServerRoleMembersHandler)completion;
  • 代码示例
objcid<NIMQChatRoleManager> qchatRoleManager = [[NIMSDK sharedSDK] qchatRoleManager];
NIMQChatRemoveServerRoleMemberParam *param = [[NIMQChatRemoveServerRoleMemberParam alloc] init];
param.accountArray = @[@"yunxin1", @"yunxin2", @"yunxin3"];
param.serverId = 4325236;
param.roleId = 5435432;
[qchatRoleManager removeServerRoleMember:param
                    completion:^(NSError *__nullable error, NIMQChatRemoveServerRoleMembersResult *__nullable result) {
    // your code
}];

查询某服务器下某身份组下的成员列表

调用 'getServerRoleMembers' 方法可分页查询某服务器身份组下的的成员列表。

该方法仅支持查询服务器的自定义身份组,即 NIMQChatRoleTypeNIMQChatRoleTypeEveryOne 的身份组。 创建服务器时默认生成的 @everyone 身份组,即 NIMQChatRoleTypeNIMQChatRoleTypeCustom 的身份组,不支持调用该方法查询成员列表。 如果调用该方法查询 @everyone 身份组的成员列表,将报错(错误码 403)。

  • 接口原型
objc/**
 * 查询某服务器下某身份组下的成员列表
 *
 * @param param 传入参数
 * @param completion 结果回调
 */
- (void)getServerRoleMembers:(NIMQChatGetServerRoleMembersParam *)param
                      completion:(nullable NIMQChatGetServerRoleMembersHandler)completion;

其中 NIMQChatGetServerRoleMembersParam 需要传入 ServerId,Server 身份组 ID,查询锚点时间戳和查询数量限制,其中查询下一页时需要传入查询锚点 accid。

  • 代码示例
objcid<NIMQChatRoleManager> qchatRoleManager = [[NIMSDK sharedSDK] qchatRoleManager];
NIMQChatGetServerRoleMembersParam *param = [[NIMQChatGetServerRoleMembersParam alloc] init];
param.serverId = 123456;
param.roleId = 111;
param.timeTag = 0;
param.accid = @"yunxin1";
param.limit = 20;
[qchatRoleManager getServerRoleMembers:param
                  completion:^(NSError *__nullable error, NIMQChatGetServerRoleMembersResult *__nullable result) {
    // your code
}];

通过 accid 查询自定义身份组列表

SDK 可以通过 accid、查询锚点时间戳和查询数量限制分页查询该 accid 所属的 Server 身份组列表,注意:查询结果只会返回自定义身份组,不包含 everyone 身份组。

  • 接口原型
objc/**
 * 通过accid查询自定义身份组列表
 *
 * @param param 传入参数
 * @param completion 结果回调
 */
- (void)getServerRolesByAccid:(NIMQChatGetServerRolesByAccidParam *)param
                     completion:(nullable NIMQChatGetServerRolesByAccidHandler)completion;
  • 代码示例
objcid<NIMQChatRoleManager> qchatRoleManager = [[NIMSDK sharedSDK] qchatRoleManager];
NIMQChatGetServerRolesByAccidParam *param = [[NIMQChatGetServerRolesByAccidParam alloc] init];
param.serverId = 123456;
param.accid = @"yunxin1";
param.timeTag = 0;
param.limit = 20;
[qchatRoleManager getServerRolesByAccid:param
                   completion:^(NSError *__nullable error, NIMQChatGetServerRolesByAccidResult *__nullable result) {
    // your code
}];

查询一批 accids 的自定义身份组列表

SDK 可以通过一组 accid 查询这些 accid 所属的 Server 身份组列表,注意:查询结果只会返回自定义身份组,不包含 everyone 身份组。

  • 接口原型
objc/**
 * 查询一批accids的自定义身份组列表
 *
 * @param param 传入参数
 * @param completion 结果回调
 */
- (void)getExistingServerRolesByAccids:(NIMQChatGetExistingServerRolesByAccidsParam *)param
                     completion:(nullable NIMQChatGetExistingServerRolesByAccidsHandler)completion;
  • 代码示例
objc- (void)testGetExistingServerRolesByAccids {
id<NIMQChatRoleManager> qchatRoleManager = [[NIMSDK sharedSDK] qchatRoleManager];
NIMQChatGetExistingServerRolesByAccidsParam *param = [[NIMQChatGetExistingServerRolesByAccidsParam alloc] init];
param.serverId = 123456;
param.accids = @[@"yunxin1", @"yunxin2", @"yunxin3"];
[qchatRoleManager getExistingServerRolesByAccids:param
                            completion:^(NSError *__nullable error, NIMQChatGetExistingServerRolesByAccidsResult *__nullable result) {
    // your code
}];

查询一批服务器身份组在频道中的身份组信息

SDK 支持通过传入一组 Server 身份组 Id 查询这些 Server 身份组被添加到 Channel 后的 Channel 身份列表,只会返回已经配置在该的 Channel 的身份组列表。

  • 接口原型
objc/**
 * 查询一批服务器身份组在频道中的身份组信息,只会返回存在的
 *
 * @param param 传入参数
 * @param completion 结果回调
 */
- (void)getExistingChannelRolesByServerRoleIds:(NIMQChatGetExistingChannelRolesByServerRoleIdsParam *)param
                     completion:(nullable NIMQChatGetExistingChannelRolesByServerRoleIdsHandler)completion;
  • 代码示例
objcid<NIMQChatRoleManager> qchatRoleManager = [[NIMSDK sharedSDK] qchatRoleManager];
NIMQChatGetExistingChannelRolesByServerRoleIdsParam *param = [[NIMQChatGetExistingChannelRolesByServerRoleIdsParam alloc] init];
param.serverId = 123456;
param.channelId = 121212;
param.roleIds = @[@(111), @(222), @(333)];
[qchatRoleManager getExistingChannelRolesByServerRoleIds:param
                                    completion:^(NSError *__nullable error, NIMQChatGetExistingChannelRolesByServerRoleIdsResult *__nullable result) {
    // your code
}];

查询一批 accids 在频道中配置的权限

SDK 支持通过传入 accid 列表查询多个成员在频道中的定制权限列表,查询只会返回已经存在的成员定制权限列表。

  • 接口原型
objc/**
 * 查询一批accids在频道中配置的权限,只会返回存在的
 *
 * @param param 传入参数
 * @param completion 结果回调
 */
- (void)getExistingMemberRolesByAccids:(NIMQChatGetExistingMemberRolesByAccidsParam *)param
                     completion:(nullable NIMQChatGetExistingMemberRolesByAccidsHandler)completion;
  • 代码示例
objcid<NIMQChatRoleManager> qchatRoleManager = [[NIMSDK sharedSDK] qchatRoleManager];
NIMQChatGetExistingMemberRolesByAccidsParam *param = [[NIMQChatGetExistingMemberRolesByAccidsParam alloc] init];
param.serverId = 123456;
param.channelId = 121212;
param.accids = @[@"yunxin1", @"yunxin2", @"yunxin3"];
[qchatRoleManager getExistingMemberRolesByAccids:param
                            completion:^(NSError *__nullable error, NIMQChatGetExistingMemberRolesByAccidsResult *__nullable result) {
    // your code
}];

批量更新服务器身份组的优先级

updateServerRolePriorities 接口可以同时修改多个服务器的优先级,修改后的优先级值必须在修改前的优先级范围之内。比如,修改前 serverRole1 优先级值 p1,serverRole2 优先级值 p2,serverRole3 优先级值 p3,想把他们的优先级分别改为 P1,P2,P3,必须满足 min(P1,P2,P3) >= min(p1,p2,p3),max(P1,P2,P3) <= max(p1,p2,p3)。该接口需要 NIMQChatPermissionTypeManageRole 权限。

  • 接口原型
objc/**
 * 批量更新服务器身份组的优先级
 *
 * @param param 传入参数
 * @param completion 结果回调
 */
- (void)updateServerRolePriorities:(NIMQChatupdateServerRolePrioritiesParam *)param
                     completion:(nullable NIMQChatupdateServerRolePrioritiesHandler)completion;
  • 代码示例
objcid<NIMQChatRoleManager> qchatRoleManager = [[NIMSDK sharedSDK] qchatRoleManager];
NIMQChatupdateServerRolePrioritiesParam *param = [[NIMQChatupdateServerRolePrioritiesParam alloc] init];
param.serverId = 123456;
NIMQChatUpdateServerRolePriorityItem *updateItem = [[NIMQChatUpdateServerRolePriorityItem alloc] init];
updateItem.serverId = 123456;
updateItem.roleId = 111;
// 更新优先级需要关注已有优先级
updateItem.priority = @(2);
param.updateItems = @[updateItem];
[qchatRoleManager updateServerRolePriorities:param
                        completion:^(NSError *__nullable error, NIMQChatupdateServerRolePrioritiesResult *__nullable result) {
    // your code
}];

查询一批 accids 是否在某个服务器身份组

SDK 支持通过 accid 查询某个 Server 身份组下的身份组成员信息。

  • 接口原型
objc/**
* 查询一批accids是否在某个服务器身份组,返回在的成员信息
*
* @param param 传入参数
* @param completion 结果回调
*/
- (void)getExistingServerRoleMembersByAccids:(NIMQChatGetExistingServerRoleMembersByAccidsParam *)param
                    completion:(nullable NIMQChatGetExistingServerRoleMembersByAccidsHandler)completion;
  • 代码示例
objcid<NIMQChatRoleManager> qchatRoleManager = [[NIMSDK sharedSDK] qchatRoleManager];
NIMQChatGetExistingServerRoleMembersByAccidsParam *param = [[NIMQChatGetExistingServerRoleMembersByAccidsParam alloc] init];
param.serverId = 123456;
param.roleId = 111;
param.accids = @[@"yunxin1", @"yunxin2", @"yunxin3"];
[qchatRoleManager getExistingServerRoleMembersByAccids:param
                                  completion:^(NSError *__nullable error, NIMQChatGetExistingServerRoleMembersByAccidsResult *__nullable result) {
    // your code
}];

查询自己是否有某个权限

  • 接口原型
objc/**
* 查询自己是否有某个权限
*
* @param param 传入参数
* @param completion 结果回调
*/
- (void)checkPermission:(NIMQChatCheckPermissionParam *)param
                    completion:(nullable NIMQChatCheckPermissionHandler)completion;
  • 示例代码
objcNIMQChatCheckPermissionParam *param = [[NIMQChatCheckPermissionParam alloc] init];
param.serverId = 62363463;
// channelId为可选,如果不传,则查server权限;否则查channel权限
param.channelId = 645374;
param.permissionType = NIMQChatPermissionTypeKickOthersInServer;

[[NINSDK sharedSDK].qchatServerManager checkPermission:param completion:^{
    //code here
 }];

查询自己是否拥有某些权限

  • 接口原型
/**
 * 查询自己是否拥有某些权限
 *
 * @param param 传入参数
 * @param completion 结果回调
 */
- (void)checkPermissions:(NIMQChatCheckPermissionsParam *)param
                      completion:(nullable NIMQChatCheckPermissionsHandler)completion;
  • 示例代码
NIMQChatCheckPermissionsParam *param = [[NIMQChatCheckPermissionsParam alloc] init];
param.serverId = 1432214;
param.channelId = 543252;
param.permissions = @[@(NIMQChatPermissionTypeRemindAll), @(NIMQChatPermissionTypeManageServer), @(NIMQChatPermissionTypeManageBlackWhiteList)];

[[NIMSDK sharedSDK].qchatRoleManager checkPermissions:param completion:^(NSError * _Nullable error, NIMQChatCheckPermissionsResult * _Nullable result) {
    //your code
}];
此文档是否对你有帮助?
有帮助
去反馈
  • 身份组管理
  • 身份组权限类型
  • 创建服务器身份组
  • 删除服务器身份组
  • 更新服务器身份组
  • 获取服务器身份组
  • 将某身份组加入某频道
  • 删除某频道下的某身份组
  • 修改频道下某身份组的权限
  • 查询某频道下的身份组信息列表
  • 为某个人定制某频道的权限
  • 删除频道下某人的定制权限
  • 修改某人的定制权限
  • 查询 channel 下人的定制权限
  • 将某些人加入某服务器身份组
  • 将某些移除某服务器身份组
  • 查询某服务器下某身份组下的成员列表
  • 通过 accid 查询自定义身份组列表
  • 查询一批 accids 的自定义身份组列表
  • 查询一批服务器身份组在频道中的身份组信息
  • 查询一批 accids 在频道中配置的权限
  • 批量更新服务器身份组的优先级
  • 查询一批 accids 是否在某个服务器身份组
  • 查询自己是否有某个权限
  • 查询自己是否拥有某些权限