群组管理


群组分为两大类,四小类。

typedef enum{
    // 私有群组,不能被非群组成员看到
    eGroupStyle_PrivateOnlyOwnerInvite = 0,  // 只有创建者可以邀请非成员进群
    eGroupStyle_PrivateMemberCanInvite,	// 所有群成员都可以邀请非成员进群
    // 共有群组,可通过查看所有共有群组得到
    eGroupStyle_PublicJoinNeedApproval,	// 需要创建者同意才能进入(创建者可以邀请非成员进群)
    eGroupStyle_PublicOpenJoin,				// 不需要同意可以直接进入()
    eGroupStyle_Default = eGroupStyle_PrivateOnlyOwnerInvite,
}EMGroupStyle;

注:

  1. 群组实例对应 EMGroup,SDK 的 EMGroup 正在进行优化,不允许用户自己初始化 EMGroup 或者 copy EMGroup。
  2. 群组不支持权限转移,没有 admin 权限,owner 只有一个且为创建者。

创建群组

目前创建群组支持的配置属性有:

  • 群名称
  • 群描述
  • 群人数(不支持修改,目前上限为2000人)
  • 群类型(即上面提到的四种群组类型)

1. 同步方法

EMError *error = nil;
EMGroupStyleSetting *groupStyleSetting = [[EMGroupStyleSetting alloc] init];
groupStyleSetting.groupMaxUsersCount = 500; // 创建500人的群,如果不设置,默认是200人。
groupStyleSetting.groupStyle = eGroupStyle_PublicOpenJoin; // 创建不同类型的群组,这里需要才传入不同的类型
EMGroup *group = [[EaseMob sharedInstance].chatManager createGroupWithSubject:@"群组名称" description:@"群组描述" invitees:@[@"6001",@"6002"] initialWelcomeMessage:@"邀请您加入群组" styleSetting:groupStyleSetting error:&error];
if(!error){
    NSLog(@"创建成功 -- %@",group);
}

2. block异步方法

EMGroupStyleSetting *groupStyleSetting = [[EMGroupStyleSetting alloc] init];
groupStyleSetting.groupMaxUsersCount = 500; // 创建500人的群,如果不设置,默认是200人。
groupStyleSetting.groupStyle = eGroupStyle_PublicOpenJoin; // 创建不同类型的群组,这里需要才传入不同的类型
[[EaseMob sharedInstance].chatManager asyncCreateGroupWithSubject:@"群组名称" 
								description:@"群组描述" 
								invitees:@[@"6001",@"6002"] 
								initialWelcomeMessage:@"邀请您加入群组" 
								styleSetting:groupStyleSetting 
								completion:^(EMGroup *group, EMError *error) {
    if(!error){
        NSLog(@"创建成功 -- %@",group);
    }        
} onQueue:nil];

3. IChatManagerDelegate 回调方法

接口调用

EMGroupStyleSetting *groupStyleSetting = [[EMGroupStyleSetting alloc] init];
groupStyleSetting.groupMaxUsersCount = 500; // 创建500人的群,如果不设置,默认是200人。
groupStyleSetting.groupStyle = eGroupStyle_PublicOpenJoin; // 创建不同类型的群组,这里需要才传入不同的类型
[[EaseMob sharedInstance].chatManager asyncCreateGroupWithSubject:@"群组名称" 
    								description:@"群组描述" 
    								invitees:@[@"6001",@"6002"] 
    								initialWelcomeMessage:@"邀请您加入群组" 
    								styleSetting:groupStyleSetting];

回调监听

/*!
 @method
 @brief 创建一个群组后的回调
 @param group 所创建的群组对象
 @param error 错误信息
 @discussion
 */
- (void)group:(EMGroup *)group didCreateWithError:(EMError *)error;

获取群详情

分两种接口:

1. 只获取群详情的接口

/*!
 @method
 @brief 获取群组信息
 @param groupId 群组ID
 @param pError  错误信息
 @result 所获取的群组对象
 */
- (EMGroup *)fetchGroupInfo:(NSString *)groupId error:(EMError **)pError;

/*!
 @method
 @brief 异步方法,获取群组信息
 @param groupId 群组ID
 @discussion
        执行后,回调didFetchGroupInfo:error会被触发
 */
- (void)asyncFetchGroupInfo:(NSString *)groupId;

/*!
 @method
 @brief 异步方法,获取群组信息
 @param groupId 群组ID
 @param completion 消息完成后的回调
 @param aQueue     回调block时的线程
 */
- (void)asyncFetchGroupInfo:(NSString *)groupId
                 completion:(void (^)(EMGroup *group,
                                      EMError *error))completion
                    onQueue:(dispatch_queue_t)aQueue;

2. 自主选择是否一起获取群成员

/*!
 @method
 @brief 同步方法,获取群组信息
 @param groupId             群组ID
 @param includesOccupantList 是否获取成员列表
 @param pError              错误信息
 @return 群组
 */
- (EMGroup *)fetchGroupInfo:(NSString *)groupId includesOccupantList:(BOOL)includesOccupantList error:(EMError **)pError;

/*!
 @method
 @brief 异步方法,获取群组信息
 @param groupId             群组ID
 @param includesOccupantList 是否获取成员列表
 @discussion
 执行完成后,回调[didFetchGroupInfo:error:]
 */
- (void)asyncFetchGroupInfo:(NSString *)groupId includesOccupantList:(BOOL)includesOccupantList;

/*!
 @method
 @brief 异步方法,获取群组信息
 @param groupId             群组ID
 @param includesOccupantList 是否获取成员列表
 @param completion          消息完成后的回调
 @param aQueue              回调block时的线程
 */
- (void)asyncFetchGroupInfo:(NSString *)groupId
        includesOccupantList:(BOOL)includesOccupantList
                 completion:(void (^)(EMGroup *group,EMError *error))completion
                    onQueue:(dispatch_queue_t)aQueue;

获取群成员

/*!
 @method
 @brief 同步方法,获取群组成员列表
 @param groupId    群组ID
 @param pError     错误信息
 @return  群组的成员列表(包含创建者)
 */
- (NSArray *)fetchOccupantList:(NSString *)groupId error:(EMError **)pError;

/*!
 @method
 @brief 异步方法,获取群组成员列表
 @param groupId    群组ID
 @discussion
 执行完成后,回调[didFetchGroupOccupantsList:error:]
 */
- (void)asyncFetchOccupantList:(NSString *)groupId;

/*!
 @method
 @brief 异步方法,获取群组成员列表
 @param groupId    群组ID
 @param completion 消息完成后的回调
 @param aQueue     回调block时的线程
 */
- (void)asyncFetchOccupantList:(NSString *)groupId
                    completion:(void (^)(NSArray *occupantsList,EMError *error))completion
                       onQueue:(dispatch_queue_t)aQueue;

加入群组

群组分4种类型,目前 SDK 不支持自主选择是否进群。我们将针对每种类型讲解加入群组要进行的操作。

  1. eGroupStyle_PrivateOnlyOwnerInvite 该类型的群组只允许群主(owner)添加人进群,其他人无法主动加入。
  2. eGroupStyle_PrivateMemberCanInvite (推荐使用)该类型的群组允许所有群成员添加人进群,其他人无法主动加入。
  3. eGroupStyle_PublicJoinNeedApproval (推荐使用)该类型的群组只允许群主(owner)添加人进群;其他人想进入群组的话,需要先发送申请,群主同意申请之后才能进群;其他人无法主动加入。
  4. eGroupStyle_PublicOpenJoin (不推荐使用)该类型的群组允许任何人主动加入群组。

添加人进群

被添加的人会收到回调:

/*!
@method
@brief 接受群组邀请并加入群组后的回调
@param group 所接受的群组
@param error 错误信息
*/
- (void)didAcceptInvitationFromGroup:(EMGroup *)group error:(EMError *)error;

加人接口如下:

1. 同步方法

EMError *error = nil;
[[EaseMob sharedInstance].chatManager addOccupants:@[@"6001",@"6002"] toGroup:@"1410329312753" welcomeMessage:@"邀请信息" error:&error];
if (!error) {
    NSLog(@"添加成功");
}

2. block 异步方法

[[EaseMob sharedInstance].chatManager asyncAddOccupants:@[@"6001",@"6002"] toGroup:@"1410329312753" welcomeMessage:@"邀请信息"  completion:^(NSArray *occupants, EMGroup *group, NSString *welcomeMessage, EMError *error) {
    if (!error) {
    NSLog(@"添加成功");
    }
} onQueue:nil];

3. IChatManagerDelegate 异步方法

接口调用

[[EaseMob sharedInstance].chatManager asyncAddOccupants:@[@"6001",@"6002"] toGroup:@"1410329312753" welcomeMessage:@"邀请信息"];

监听回调

/*!
 @method
 @brief 群组信息更新后的回调
 @param group 发生更新的群组
 @param error 错误信息
 @discussion
        当添加/移除/更改角色/更改主题/更改群组信息之后,都会触发此回调
 */
- (void)groupDidUpdateInfo:(EMGroup *)group error:(EMError *)error;

发送进群申请

1. 同步方法

EMError *error = nil;
// 申请加入需要审核的公开群组
[[EaseMob sharedInstance].chatManager applyJoinPublicGroup:@"1410329312753" withGroupname:@"群组名称" message:@"申请信息" error:&error];
if (!error) {
    NSLog(@"申请成功");
}

2. block异步方法

[[EaseMob sharedInstance].chatManager asyncApplyJoinPublicGroup:@"1410329312753" withGroupname:@"群组名称" message:@"申请信息" completion:^(EMGroup *group, EMError *error) {
    if (!error) {
        NSLog(@"申请成功");
    }
} onQueue:nil];

3. IChatManagerDelegate 回调方法

接口调用

[[EaseMob sharedInstance].chatManager asyncApplyJoinPublicGroup:@"1410329312753" withGroupname:@"群组名称" message:@"申请信息"];

监听回调

/*!
 @method
 @brief 申请加入公开群组后的回调
 @param group 群组对象
 @param error 错误信息
 */
- (void)didApplyJoinPublicGroup:(EMGroup *)group
                          error:(EMError *)error;

处理进群申请

只有 owner 有权限处理进群申请。

1. 收到进群申请

/*!
@method
@brief 收到加入群组的申请
@param groupId         要加入的群组ID
@param groupname       申请人的用户名
@param username        申请人的昵称
@param reason          申请理由
@discussion
*/
- (void)didReceiveApplyToJoinGroup:(NSString *)groupId
                         groupname:(NSString *)groupname
                     applyUsername:(NSString *)username
                            reason:(NSString *)reason
                             error:(EMError *)error;

2. 同意进群申请

/*!
@method
@brief 同意加入群组的申请
@param groupId   所申请的群组ID
@param groupname 申请的群组名称
@param username  申请人的用户名
@param pError    错误信息
*/
- (void)acceptApplyJoinGroup:(NSString *)groupId
                   groupname:(NSString *)groupname
                   applicant:(NSString *)username
                       error:(EMError **)pError;

/*!
@method
@brief 异步方法,同意加入群组的申请
@param groupId   所申请的群组ID
@param groupname 申请的群组名称
@param username  申请人的用户名
@discussion
函数执行后,didAcceptApplyJoinGroup:username:error:回调会被触发
*/
- (void)asyncAcceptApplyJoinGroup:(NSString *)groupId
                        groupname:(NSString *)groupname
                        applicant:(NSString *)username;

/*!
@method
@brief 异步方法,同意加入群组的申请
@param groupId    所申请的群组ID
@param groupname  申请的群组名称
@param username   申请人的用户名
@param completion 消息完成后的回调
@param aQueue     回调执行时的线程
*/
- (void)asyncAcceptApplyJoinGroup:(NSString *)groupId
                        groupname:(NSString *)groupname
                        applicant:(NSString *)username
                       completion:(void (^)(EMError *error))completion
                          onQueue:(dispatch_queue_t)aQueue;

3. 拒绝加群申请

[[EaseMob sharedInstance].chatManager rejectApplyJoinGroup:@"1410329312753" groupname:@"群组名称" toApplicant:@"8001" reason:@"拒绝原因"];

加入 eGroupStyle_PublicOpenJoin 类型的群组

1. 同步方法

EMError *error = nil;
[[EaseMob sharedInstance].chatManager joinPublicGroup:@"1410329312753" error:&error];
if (!error) {
    NSLog(@入群成功");
}

2. block 回调方法

EMError *error = nil;
[[EaseMob sharedInstance].chatManager asyncJoinPublicGroup:@"1410329312753" completion:^(EMGroup *group, EMError *error) {
    if (!error) {
        NSLog(@"入群成功");
    }
} onQueue:nil];

3. IChatManagerDelegate 回调方法

接口调用

// 加入群组
[[EaseMob sharedInstance].chatManager asyncJoinPublicGroup:@"1410329312753"];

回调监听

/*!
 @method
 @brief 加入公开群组后的回调
 @param group 群组对象
 @param error 错误信息
 */
- (void)didJoinPublicGroup:(EMGroup *)group
                     error:(EMError *)error;

退出群组

群主(owner)不支持退群操作,只能解散群。

退出群组分为主动退群和被动退群。被动退群即为被 owner 踢出群组。

主动退群

1. 同步方法

EMError *error = nil;
[[EaseMob sharedInstance].chatManager leaveGroup:@"1410329312753" error:&error];
if (!error) {
    NSLog(@"退出群组成功");
}

2. block 异步方法

[[EaseMob sharedInstance].chatManager asyncLeaveGroup:@"1410329312753"
                                           completion:
 ^(EMGroup *group, EMGroupLeaveReason reason, EMError *error) {
     if (!error) {
         NSLog(@"退出群组成功");
     }
 } onQueue:nil];

3. IChatManagerDelegate 异步方法

接口调用

[[EaseMob sharedInstance].chatManager asyncLeaveGroup:@"1410329312753"];

回调监听

/*!
 @method
 @brief 离开一个群组后的回调
 @param group  所要离开的群组对象
 @param reason 离开的原因
 @param error  错误信息
 @discussion
        离开的原因包含主动退出、被别人请出、和销毁群组三种情况
 */
- (void)group:(EMGroup *)group didLeave:(EMGroupLeaveReason)reason error:(EMError *)error;
/*!
 @enum
 @brief 退出群组的原因
 @constant eGroupLeaveReason_BeRemoved 被管理员移除出该群组
 @constant eGroupLeaveReason_UserLeave 用户主动退出该群组
 @constant eGroupLeaveReason_Destroyed 该群组被别人销毁
 */
typedef NS_ENUM(NSInteger, EMGroupLeaveReason) {
    eGroupLeaveReason_BeRemoved = 1,
    eGroupLeaveReason_UserLeave,
    eGroupLeaveReason_Destroyed
};

解散群组

解散群组需要 owner 权限。

1. 同步方法

EMError *error = nil;
[[EaseMob sharedInstance].chatManager destroyGroup:group.groupId error:&error];
if (!error) {
    NSLog(@"解散成功");
}

2. block 异步方法

[[EaseMob sharedInstance].chatManager asyncDestroyGroup:group.groupId completion:^(EMGroup *group, EMGroupLeaveReason reason, EMError *error) {
    if (!error) {
        NSLog(@"解散成功");
    }
} onQueue:nil];

3. IChatManagerDelegate 异步方法

接口调用

[[EaseMob sharedInstance].chatManager asyncDestroyGroup:groupId];

回调监听

/*!
 @method
 @brief 离开一个群组后的回调
 @param group  所要离开的群组对象
 @param reason 离开的原因
 @param error  错误信息
 @discussion
        离开的原因包含主动退出、被别人请出、和销毁群组三种情况
 */
- (void)group:(EMGroup *)group didLeave:(EMGroupLeaveReason)reason error:(EMError *)error;

修改群名称

只有 owner 有权限修改。

1. 同步方法

EMError *error = nil;
// 修改群名称
EMGroup *group = [[EaseMob sharedInstance].chatManager changeGroupSubject:@"要修改的名称" forGroup:@"1410329312753" error:&error];
if (!error) {
    NSLog(@"修改成功");
}

2. block 异步方法

// 修改群名称
[[EaseMob sharedInstance].chatManager asyncChangeGroupSubject:@"要修改的群名称" forGroup:@"1410329312753" completion:^(EMGroup *group, EMError *error) {
    if (!error) {
        NSLog(@"修改成功");
    }
} onQueue:nil];

3. IChatManagerDelegate 异步方法

接口调用

[[EaseMob sharedInstance].chatManager asyncChangeGroupSubject:@"要修改的群名称" 	forGroup:@"1410329312753"];

回调监听

/*!
@method
@brief 群组信息更新后的回调
@param group 发生更新的群组
@param error 错误信息
@discussion
当添加/移除/更改角色/更改主题/更改群组信息之后,都会触发此回调
*/
-(void)groupDidUpdateInfo:(EMGroup *)group error:(EMError *)error{
    if (!error) {
        NSLog(@"修改成功");
    }
}

修改群描述

不推荐使用,只有 owner 有权限操作。

1. 同步方法

EMError *error = nil;
// 修改群描述
[[EaseMob sharedInstance].chatManager changeDescription:@"修改的群描述" forGroup:@"1410329312753" error:&error];
if (!error) {
    NSLog(@"修改成功");
}

2. block 异步方法

// 修改群描述
[[EaseMob sharedInstance].chatManager asyncChangeDescription:@"要修改的描述" forGroup:@"1410329312753" completion:^(EMGroup *group, EMError *error) {
    if (!error) {
        NSLog(@"修改成功");
    }
} onQueue:nil];

3. IChatManagerDelegate 异步方法

接口调用

// 修改群描述
[[EaseMob sharedInstance].chatManager asyncChangeDescription:@"要修改的描述" forGroup:@"1410329312753"];

回调监听

/*!
@method
@brief 群组信息更新后的回调
@param group 发生更新的群组
@param error 错误信息
@discussion
当添加/移除/更改角色/更改主题/更改群组信息之后,都会触发此回调
*/
-(void)groupDidUpdateInfo:(EMGroup *)group error:(EMError *)error;

移除群成员

只有 owner 权限才能调用。

/*!
@method
@brief 将某些人请出群组
@param occupants 要请出群组的人的用户名列表
@param groupId   群组ID
@param pError    错误信息
@result 返回群组对象
@discussion
此操作需要admin/owner权限
*/
- (EMGroup *)removeOccupants:(NSArray *)occupants
                   fromGroup:(NSString *)groupId
                       error:(EMError *__autoreleasing *)pError;

/*!
@method
@brief 异步方法,将某些人请出群组
@param occupants 要请出群组的人的用户名列表
@param groupId   群组ID
@discussion
此操作需要admin/owner权限。
函数执行完,回调groupDidUpdateInfo:error: 会被触发
*/
- (void)asyncRemoveOccupants:(NSArray *)occupants
                   fromGroup:(NSString *)groupId;

/*!
@method
@brief 异步方法,将某些人请出群组
@param occupants  要请出群组的人的用户名列表
@param groupId    群组ID
@param completion 消息完成后的回调
@param aQueue     回调block时的线程
@discussion
此操作需要admin/owner权限
*/
- (void)asyncRemoveOccupants:(NSArray *)occupants
                   fromGroup:(NSString *)groupId
                  completion:(void (^)(EMGroup *group, EMError *error))completion
                     onQueue:(dispatch_queue_t)aQueue;

加入群黑名单

只有 owner 权限才能调用该接口,并且只有 owner 权限的才能查看群黑名单。

可以将群成员和非群成员的人加入群黑名单。

/*!
@method
@brief 将某些人加入群组黑名单
@param occupants 要加入黑名单的用户名列表
@param groupId   群组ID
@param pError    错误信息
@result 返回群组对象
@discussion
此操作需要admin/owner权限,被加入黑名单的人,不会再被允许进入群组
*/
- (EMGroup *)blockOccupants:(NSArray *)occupants
                  fromGroup:(NSString *)groupId
                      error:(EMError **)pError;

/*!
@method
@brief 异步方法,将某些人加入群组黑名单
@param occupants 要加入黑名单的用户名列表
@param groupId   群组ID
@discussion
此操作需要admin/owner权限,被加入黑名单的人,不会再被允许进入群组
函数执行完,回调groupDidUpdateInfo:error:会被触发
*/
- (void)asyncBlockOccupants:(NSArray *)occupants
                  fromGroup:(NSString *)groupId;

/*!
@method
@brief 异步方法,将某些人加入群组黑名单
@param occupants   要加入黑名单的用户名列表
@param groupId     群组ID
@param completion  消息完成后的回调
@param aQueue      回调block时的线程
@discussion
此操作需要admin/owner权限,被加入黑名单的人,不会再被允许进入群组
*/
- (void)asyncBlockOccupants:(NSArray *)occupants
                  fromGroup:(NSString *)groupId
                 completion:(void (^)(EMGroup *group, EMError *error))completion
                    onQueue:(dispatch_queue_t)aQueue;

移出群黑名单

只有 owner 权限才能调用该接口,并且只有 owner 权限的才能查看群黑名单。

从群黑名单移除出去,该用户已经不在群组里了,需要重新加入群组。

/*!
@method
@brief 将某些人从群组黑名单中解除
@param occupants 要从黑名单中移除的用户名列表
@param groupId   群组ID
@param pError    错误信息
@result 返回群组对象
@discussion
此操作需要admin/owner权限,从黑名单中移除后,可以再次进入群组
*/
- (EMGroup *)unblockOccupants:(NSArray *)occupants
                     forGroup:(NSString *)groupId
                        error:(EMError **)pError;

/*!
@method
@brief 异步方法,将某些人从群组黑名单中解除
@param occupants 要从黑名单中移除的用户名列表
@param groupId   群组ID
@discussion
此操作需要admin/owner权限,从黑名单中移除后,可以再次进入群组
函数执行完,回调groupDidUpdateInfo:error:会被触发
*/
- (void)asyncUnblockOccupants:(NSArray *)occupants
                     forGroup:(NSString *)groupId;

/*!
@method
@brief 异步方法,将某些人从群组黑名单中解除
@param occupants   要从黑名单中移除的用户名列表
@param groupId     群组ID
@param completion  消息完成后的回调
@param aQueue      回调block时的线程
@discussion
此操作需要admin/owner权限,从黑名单中移除后,可以再次进入群组
*/
- (void)asyncUnblockOccupants:(NSArray *)occupants
                     forGroup:(NSString *)groupId
                   completion:(void (^)(EMGroup *group, EMError *error))completion
                      onQueue:(dispatch_queue_t)aQueue;

屏蔽群消息

不允许 owner 权限的调用。

/*!
@method
@brief 屏蔽群消息,服务器不发送消息(不能屏蔽自己创建的群,EMErrorInvalidUsername)
@param groupId   要屏蔽的群ID
@param pError    错误信息
@result 返回群组对象
@discussion
被屏蔽的群,服务器不再发消息
*/
- (EMGroup *)blockGroup:(NSString *)groupId
                  error:(EMError **)pError;

/*!
@method
@brief 异步方法,屏蔽群消息,服务器不发送消息(不能屏蔽自己创建的群,EMErrorInvalidUsername)
@param groupId     要取消屏蔽的群ID
@param completion  消息完成后的回调
@param aQueue      回调block时的线程
@discussion
被屏蔽的群,服务器不再发消息
*/
- (void)asyncBlockGroup:(NSString *)groupId
             completion:(void (^)(EMGroup *group, EMError *error))completion
                onQueue:(dispatch_queue_t)aQueue;

取消屏蔽群消息

不允许 owner 权限的调用。

/*!
@method
@brief 取消屏蔽群消息(不能操作自己创建的群,EMErrorInvalidUsername)
@param groupId   要取消屏蔽的群ID
@param pError    错误信息
@result 返回群组对象
@discussion
*/
- (EMGroup *)unblockGroup:(NSString *)groupId
                    error:(EMError **)pError;

/*!
@method
@brief 异步方法,取消屏蔽群消息(不能操作自己创建的群,EMErrorInvalidUsername)
@param groupId     要取消屏蔽的群ID
@param completion  消息完成后的回调
@param aQueue      回调block时的线程
@discussion
*/
- (void)asyncUnblockGroup:(NSString *)groupId
               completion:(void (^)(EMGroup *group, EMError *error))completion
                  onQueue:(dispatch_queue_t)aQueue;

获取与登录者相关的群组,包括创建的和加入的。

查看所有当前登录账号所在群组,提供了五种方法

1. 同步方法

EMError *error = nil;
NSArray *myGroups = [[EaseMob sharedInstance].chatManager fetchMyGroupsListWithError:&error];
if (!error) {
    NSLog(@"获取成功 -- %@",myGroups);
}

2. block 异步方法

[[EaseMob sharedInstance].chatManager asyncFetchMyGroupsListWithCompletion:^(NSArray *groups, EMError *error) {
    if (!error) {
        NSLog(@"获取成功 -- %@",groups);
    }
} onQueue:nil];

3. IChatManagerDelegate 回调方法

接口调用

[[EaseMob sharedInstance].chatManager asyncFetchMyGroupsList];

回调监听

/*!
 @method
 @brief 群组列表变化后的回调
 @param groupList 新的群组列表
 @param error     错误信息
 */
- (void)didUpdateGroupList:(NSArray *)groupList
                     error:(EMError *)error;

4. 取 db 中的值,必须登录成功之后才能获取到数据,该方法取到的不一定是最新的。

NSArray *groupList = [[EaseMob sharedInstance].chatManager loadAllMyGroupsFromDatabaseWithAppend2Chat:YES];

5. 取内存中的值

该方法比较特殊,只有在您之前获取过群组列表的情况下才会有值,且不能保证最新。

NSArray *groupList = [[EaseMob sharedInstance].chatManager groupList];

此操作不推荐使用,公开群太多,我们正在优化方法。

1. 同步方法

EMError *error = nil;
NSArray *publicGroupList = [[EaseMob sharedInstance].chatManager fetchAllPublicGroupsWithError:&error];
if (!error) {
    NSLog(@"获取成功 -- %@",publicGroupList);
}

2. block 异步方法

[[EaseMob sharedInstance].chatManager asyncFetchAllPublicGroupsWithCompletion:^(NSArray *groups, EMError *error) {
    if (!error) {
        NSLog(@"获取成功 -- %@",groups);
    }
} onQueue:nil];

3. IChatManagerDelegate 回调方法

接口调用

// 查看所有公开群组
[[EaseMob sharedInstance].chatManager asyncFetchAllPublicGroups];

回调监听

/*!
 @method
 @brief 获取所有公开群组后的回调
 @param groups 公开群组列表
 @param error  错误信息
 */
- (void)didFetchAllPublicGroups:(NSArray *)groups
                          error:(EMError *)error;

上一页:好友管理

下一页:聊天室管理