加入群组管理
本文档旨在指导开发者如何使用融云即时通讯 iOS IMLib SDK 实现主动加入群组、邀请用户加入群组、 用户同意或拒绝加入群组、 管理员同意或拒绝加群申请等功能。
提示
此功能从 5.12.0 版本开始支持。
开通服务
信息托管服务已默认开通,您可以直接使用此功能。
加入群组管理
加入群组管理包含:主动加入群组、邀请加入群组、 用户同意或拒绝加入群组、 管理员同意或拒绝加群申请等功能。
主动加入群组
您可以调用 joinGroup 方法主动加入一个群组。
加入的结果受群组的加入权限 (joinPermission) 参数影响:
- 加入权限为 “需要群主/管理员审批” 时
- 接口调用成功后
processCode会返回RC_GROUP_JOIN_GROUP_NEED_MANAGER_ACCEPT( 25424 ),表示需要等待群主或管理员的审批。同时本人和群主或管理员会都会收到 onGroupApplicationEvent 事件回调。
- 接口调用成功后
- 加入权限为 “无需审批” 时
- 接口调用成功后
processCode会返回RC_SUCCESS( 0 ),表示加入群组成功。同时本人和群内所有人会收到onGroupOperation事件回调,操作类型为RCGroupOperationJoin。
- 接口调用成功后
示例代码
objc
[[RCCoreClient sharedCoreClient] joinGroup:@"groupId" success:^(RCErrorCode processCode) {
// 加入成功
} error:^(RCErrorCode errorCode) {
// 加入失败
}];
邀请他人加入群组
此功能的使用受群组邀请角色权限 invitePermission 的影响,有权限的用户才可以调用 inviteUsersToGroup 方法邀请他人加入群组。
接口原 型
objc
- (void)inviteUsersToGroup:(NSString *)groupId
userIds:(NSArray<NSString *> *)userIds
success:(void (^)(RCErrorCode processCode))successBlock
error:(void (^)(RCErrorCode errorCode))errorBlock;
参数说明
| 属性名 | 类型 | 描述 |
|---|---|---|
| groupId | NSString | 群组的 targetId。 |
| userIds | NSArray | 用户 userId 列表,一次最多不超过 30 个。 |
| successBlock | Block | 成功回调。 |
| errorBlock | Block | 失败回调。 |
示例代码
objc
// 邀请加入群组的用户 ID
NSArray *userIds = @[@"userId1", @"userId2"];
[[RCCoreClient sharedCoreClient] inviteUsersToGroup:@"groupId" userIds:userIds success:^(RCErrorCode processCode) {
// 邀请成功
} error:^(RCErrorCode errorCode) {
// 邀请失败
}];
邀请用户加入群组的行为受到以下三方面的影响:
- 加入权限( joinPermission ):是否需要群主或管理员验证。
- 邀请人角色( role ):邀请人是群主或管理员,还是普通用户。
- 被邀请人处理权限( inviteHandlePermission ):是否需要被邀请人同意才能加入群组。
具体规则
提示
下表中默认了群组的邀请权限(invitePermission)为 RCGroupOperationPermissionEveryone,即所有人都可以邀请他人加入群组。
开发中可以根据实际情况设置不同的权限。
| 加入权限 | 邀请人角色 | 被邀请人审批 | 事件流程 |
|---|---|---|---|
| 需要群主/管理员审批 | 普通用户 | 需要 | 流程 A |
| 不需要 | 流程 B | ||
| 群主或管理员 | 需要 | 流程 C | |
| 不需要 | 流程 D | ||
| 无需群主/管理员审批 | 所有角色 | 需要 | 流程 C |
| 不需要 | 流程 D |
事件流程如下
流程 A
权限描述:
- 普通用户邀请他人,需要群主/管理员审批,需要被邀请人审批。
- 发出邀请后,成功回调的
processCode会返回RC_GROUP_JOIN_GROUP_NEED_MANAGER_ACCEPT( 25424 ),表示需要等待群主/管理员审批。邀请人和群主/管理员会收到onGroupApplicationEvent事件回调。 - 群主/管理员调用
acceptGroupApplication接口同意后,邀请人、群主/管理员、被邀请人会收到onGroupApplicationEvent事件回调。 - 被邀请人调用
acceptGroupInvite接口同意后,邀请人、群主/管理员、被邀请人会收到onGroupApplicationEvent事件回调。群内所有用户会收到群组操作onGroupOperation事件回调,操作类型为RCGroupOperationJoin。
流程 B
权限描述:
- 普通用户邀请他人,需要群主/管理员审批,不需要被邀请人审批。
- 发出邀请后,成功回调的
processCode会返回RC_GROUP_JOIN_GROUP_NEED_MANAGER_ACCEPT( 25424 ),表示需要等待群主或管理员审批。邀请人和群主/管理员会收到onGroupApplicationEvent事件回调。 - 群主或管理员调用
acceptGroupApplication接口同意后,被邀请人加入群组成功。邀请人、群主或管理员会收到onGroupApplicationEvent事件回调。群内所有用户会收到onGroupOperation事件回调,操作类型为RCGroupOperationJoin。
流程 C
权限描述:
- 任意角色的用户(群主、管理员或普通用户)邀请他人,无需群主/管理员审批,需要被邀请人审批。
- 发出邀请后,成功回调的
processCode会返回RC_GROUP_NEED_INVITEE_ACCEPT( 25427 ),表示需要被邀请人同意后才能进入群组。邀请人和被邀请人会收到onGroupApplicationEvent事件回调。 - 被邀请人调用
acceptGroupInvite接口同意后,邀请人和被邀请人会收到onGroupApplicationEvent事件回调。群内所有用户会收到onGroupOperation事件回调,操作类型为RCGroupOperationJoin。
流程 D
权限描述:
- 群主/管理员邀请 他人,需要群主/管理员审批,不需要被邀请人审批。
- 任意角色的用户(群主、管理员或普通用户)邀请他人,无需群主/管理员审批,不需要被邀请人审批。
- 发出邀请后,成功回调的
processCode会返回RC_SUCCESS( 0 ),表示邀请成功。被邀请人会直接加入群组,群内所有用户会收到onGroupOperation事件回调,操作类型为RCGroupOperationJoin。
用户处理入群邀请
同意入群邀请
用户在收到入群邀请后,可以调用 acceptGroupInvite 方法同意加入群组。
接口原型
objc
- (void)acceptGroupInvite:(NSString *)groupId
inviterId:(NSString *)inviterId
success:(void (^)(void))successBlock
error:(void (^)(RCErrorCode errorCode))errorBlock;
参数说明
| 属性名 | 类型 | 描述 |
|---|---|---|
| groupId | NSString | 群组的 targetId。 |
| inviterId | NSString | 邀请者 userId 。 |
| successBlock | Block | 成功回调。 |
| errorBlock | Block | 失败回调。 |
示例代码
objc
// 群组 ID
NSString *groupId = @"groupId";
// 邀请人 ID
NSString *inviterId = @"inviterId";
[[RCCoreClient sharedCoreClient] acceptGroupInvite:groupId inviterId:inviterId success:^{
// 同意加入成功
} error:^(RCErrorCode errorCode) {
// 同意加入失败
}];
拒绝入群邀请
用户在收到入群邀请后,可以调用 refuseGroupInvite 方法拒绝加入群组。
接口原型
objc
- (void)refuseGroupInvite:(NSString *)groupId
inviterId:(NSString *)inviterId
reason:(nullable NSString *)reason
success:(void (^)(void))successBlock
error:(void (^)(RCErrorCode errorCode))errorBlock;
参数说明
| 属性名 | 类型 | 描述 |
|---|---|---|
| groupId | NSString | 群组的 targetId。 |
| inviterId | NSString | 邀请者 userId 。 |
| reason | NSString | 拒绝原因,非必填项,拒绝时可选择是否输入拒绝原因,内容不超过 128 个字符。 |
| successBlock | Block | 成功回调。 |
| errorBlock | Block | 失败回调。 |