====== 群组管理 ======
----
群组分为两大类,四小类。
typedef enum{
// 私有群组,不能被非群组成员看到
eGroupStyle_PrivateOnlyOwnerInvite = 0, // 只有创建者可以邀请非成员进群
eGroupStyle_PrivateMemberCanInvite, // 所有群成员都可以邀请非成员进群
// 共有群组,可通过查看所有共有群组得到
eGroupStyle_PublicJoinNeedApproval, // 需要创建者同意才能进入(创建者可以邀请非成员进群)
eGroupStyle_PublicOpenJoin, // 不需要同意可以直接进入()
eGroupStyle_Default = eGroupStyle_PrivateOnlyOwnerInvite,
}EMGroupStyle;
注:
- 群组实例对应 EMGroup,SDK 的 EMGroup 正在进行优化,不允许用户自己初始化 EMGroup 或者 copy EMGroup。
- 群组不支持权限转移,没有 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 不支持自主选择是否进群。我们将针对每种类型讲解加入群组要进行的操作。
- eGroupStyle_PrivateOnlyOwnerInvite 该类型的群组只允许群主(owner)添加人进群,其他人无法主动加入。
- eGroupStyle_PrivateMemberCanInvite (推荐使用)该类型的群组允许所有群成员添加人进群,其他人无法主动加入。
- eGroupStyle_PublicJoinNeedApproval (推荐使用)该类型的群组只允许群主(owner)添加人进群;其他人想进入群组的话,需要先发送申请,群主同意申请之后才能进群;其他人无法主动加入。
- 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;
===== 管理群组的 APNS 离线推送 =====
见 [[start:300iosclientintegration:80apns#设置指定群组是否接收apns|APNS 离线推送-设置指定群组是否接收 APNS]]
===== 获取与登录者相关的群组 =====
获取与登录者相关的群组,包括创建的和加入的。
查看所有当前登录账号所在群组,提供了五种方法
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;
----
上一页:[[start:300iosclientintegration:90buddymgmt|好友管理]]
下一页:[[start:300iosclientintegration:75chatroommgmt|聊天室管理]]