# 群组管理

群组管理包括创建群、删除群、更新群以及查询群功能。

# 创建群组

创建群组需要传入群成员对象,首先调用下面的方法构造群成员对象

//构造 JCGroupMember,uid, memberType 和 displayname 需要赋值
JCGroupMember *member = [[JCGroupMember alloc] init:@"群groupId" userId:@"登录cloud平台的账号" uid:@"uid" displayName:@"群昵称" memberType:JCGroupMemberTypeMember changeState:JCGroupChangeStateAdd];

输入参数介绍:

参数 类型 说明
groupId NSString 群组唯一标识
userId NSString 用户标识
uid NSString 服务器端用户标识,当通知成员变化时,changeState 为 JCGroupChangeStateRemove 时只能通过此参数来判断,不能通过 userId
displayName NSString 昵称
memberType JCGroupMemberType 成员类型
changeState JCGroupChangeState 成员变化状态

TIP

调用构造方法时,uid, memberType 和 displayname 需要赋值。

返回值介绍:

返回值类型 说明
instancetype 返回 JCGroupItem 对象

群成员对象构造完成后,调用下面的方法创建群组

NSArray<JCGroupMember *> *memberList = [NSArray array];
JCGroupMember *member1 = [[JCGroupMember alloc] init:@"群groupId" userId:@"登录cloud平台的账号" uid:@"uid" displayName:@"群昵称" memberType:JCGroupMemberTypeMember changeState:JCGroupChangeStateAdd];
JCGroupMember *member2 = [[JCGroupMember alloc] init:@"群groupId" userId:@"登录cloud平台的账号" uid:@"uid" displayName:@"群昵称" memberType:JCGroupMemberTypeMember changeState:JCGroupChangeStateAdd];
memberList = @[member1, member2];
[JCGroupWrapper createGroup:memberList groupName:@"群组名称" type:JCGroupTypeNormal customProperties:nil usingBlock:^(bool, int, NSObject * _Nullable) {
    NSLog(@"创建群组");
}];

输入参数介绍:

参数 类型 说明
members NSArray<JCGroupMember*> 成员列表
groupName NSString 群名字
type JCGroupType 群类型
customProperties NSDictionary<NSString*, NSObject*> 群自定义属性
block GroupOperationBlock 结果函数

相关回调

创建群会触发 onGroupAdd(新增群)回调

-(void)onGroupAdd:(JCGroupData*)group {
    NSLog(@"新增群");
}

参数介绍:

参数 类型 说明
group JCGroupData JCGroupData 对象

# 离开群组

调用下面的方法离开群组,群主必须转移群主后才能离开

[JCGroupWrapper leave:@"群 ServerUid" usingBlock:^(bool, int, NSObject * _Nullable) {
    NSLog(@"离开群组");
}];

输入参数介绍:

参数 类型 说明
groupServerUid NSString 群 ServerUid
block GroupOperationBlock 结果函数

离开群组会触发 onLeave 回调

-(void)onLeave:(int)operationId result:(bool)result reason:(JCGroupReason)reason groupId:(NSString*)groupId;

参数介绍:

参数 类型 说明
operationId int 操作标识,由 leave 接口返回
result bool true 表示成功,false 表示失败
reason JCGroupReason 当 result 为 false 时该值有效,参见 JCGroupReason
groupId NSString 群标识

离开群组成功后会触发 onGroupDelete 回调和 onConversationDelete 回调

-(void)onGroupDelete:(JCGroupData*)group;

参数介绍:

参数 类型 说明
group JCGroupData JCGroupData 对象
-(void)onConversationDelete:(long)conversationId;

参数介绍:

参数 类型 说明
conversationId long 会话数据库 id,-1 表示全部会话

# 解散群组

调用下面的方法解散群组

[JCGroupWrapper dissolve:@"groupServerUid" usingBlock:^(bool, int, NSObject * _Nullable) {
    NSLog(@"解散群组");
}];

输入参数介绍:

参数 类型 说明
groupServerUid NSString 群 ServerUid
block GroupOperationBlock 结果函数

相关回调

解散群组会触发 onGroupDelete 回调,可以在该回调中进行后续的处理

-(void)onGroupDelete:(JCGroupData*)group {
    NSLog(@"删除群");
}

参数介绍:

参数 类型 说明
group JCGroupData JCGroupData 对象

# 更新群组

更新群组包括增删成员、设置成员的角色、修改群相关属性,如群名称等、上传头像、拉取群消息等。

# 添加成员

调用下面的方法向群组中添加成员

NSArray<JCGroupMember *> *memberList = [NSArray array];
JCGroupMember *member1 = [[JCGroupMember alloc] init:@"群groupId" userId:@"登录cloud平台的账号" uid:@"uid" displayName:@"群昵称" memberType:JCGroupMemberTypeMember changeState:JCGroupChangeStateAdd];
JCGroupMember *member2 = [[JCGroupMember alloc] init:@"群groupId" userId:@"登录cloud平台的账号" uid:@"uid" displayName:@"群昵称" memberType:JCGroupMemberTypeMember changeState:JCGroupChangeStateAdd];
memberList = @[member1, member2];
[JCGroupWrapper addMembers:@"群 ServerUid" members:memberList usingBlock:^(bool, int, NSObject * _Nullable) {
    NSLog(@"添加群成员");
}];

输入参数介绍:

参数 类型 说明
groupServerUid NSString 群 ServerUid
members NSArray<JCGroupMember*> 成员列表,uid 和 displayname 需要赋值
block GroupOperationBlock 结果函数
  • 相关回调

添加群成员会触发 onGroupMemberAdd 回调

-(void)onGroupMemberAdd:(JCGroupMemberData*)member {
    NSLog(@"添加群成员");
}

参数介绍:

参数 类型 说明
member JCGroupMemberData JCGroupMemberData 对象

# 删除群成员

调用下面的方法踢掉群组中的人员

NSArray<NSString*>* uidAry = [NSArray array];
[uidAry arrayByAddingObject:@"uid1"];
[JCGroupWrapper kickMembers:@"群 ServerUid" memberServerUids:uidAry usingBlock:^(bool, int, NSObject * _Nullable) {
    NSLog(@"剔除成员");
}];

输入参数介绍:

参数 类型 说明
groupServerUid NSString 群 ServerUid
memberServerUids NSArray<NSString*> 成员 ServerUid 数组
block GroupOperationBlock 结果函数

相关回调

删除群成员会触发 onGroupMemberDelete 回调

-(void)onGroupMemberDelete:(JCGroupMemberData*)member {
    NSLog(@"删除群成员");
}

参数介绍:

参数 类型 说明
member JCGroupMemberData JCGroupMemberData 对象

# 设置普通成员

如果想把某个管理员设置为普通群成员,可以调用下面的方法。

[JCGroupWrapper modifyToMember:@" 群 ServerUid" memberServerUid:@"成员 serverUid" usingBlock:^(bool, int, NSObject * _Nullable) {
    NSLog(@"设置普通成员");
}];

TIP

只有当前群主才可以进行此操作

输入参数介绍:

参数 类型 说明
groupServerUid NSString 群 ServerUid
memberServerUid NSString 成员 serverUid
block GroupOperationBlock 结果函数

# 设置管理员

如果想把某个成员设置为管理员,可以调用下面的方法。

[JCGroupWrapper modifyToManager:@" 群 ServerUid" memberServerUid:@"成员 serverUid" usingBlock:^(bool, int, NSObject * _Nullable) {
    NSLog(@"设置管理员");
}];

TIP

只有当前群主才可以进行此操作

输入参数介绍:

参数 类型 说明
groupServerUid NSString 群 ServerUid
memberServerUid NSString 成员 serverUid
block GroupOperationBlock 结果函数

# 设置群主

如果想把某个成员设置为群主,可以调用下面的方法。

[JCGroupWrapper modifyToOwner:@" 群 ServerUid" memberServerUid:@"成员 serverUid" usingBlock:^(bool, int, NSObject * _Nullable) {
    NSLog(@"设置管理员");
}];

TIP

只有当前群主才可以进行此操作

输入参数介绍:

参数 类型 说明
groupServerUid NSString 群 ServerUid
memberServerUid NSString 成员 serverUid
block GroupOperationBlock 结果函数
  • 相关回调

设置群成员角色会触发 onGroupMemberUpdate(群成员更新)回调

-(void)onGroupMemberUpdate:(JCGroupMemberData*)member {
    NSLog(@"群成员更新");
}

参数介绍:

参数 类型 说明
member JCGroupMemberData JCGroupMemberData 对象

# 修改自己的群昵称

如果想修改自己的群昵称,可以调用下面的方法

[JCGroupWrapper changeDisplayName:@" 群 ServerUid" displayName:@"新的昵称" usingBlock:^(bool, int, NSObject * _Nullable) {
    NSLog(@"修改群昵称");
}];

输入参数介绍:

参数 类型 说明
groupServerUid NSString 群 ServerUid
displayName NSString 昵称
block GroupOperationBlock 结果函数

# 设置群自定义属性

如果想设置群自定义属性,可以调用下面的方法

NSDictionaryNSString*, NSObject*> *customProperties = [NSDictionary dictionary];
[customProperties setObject:@"object" forKey:@"key"];
[JCGroupWrapper setGroupCustomProperties:@" 群 ServerUid" customProperties:customProperties usingBlock:^(bool, int, NSObject * _Nullable) {
    NSLog(@"设置群自定义属性");
}];

输入参数介绍:

参数 类型 说明
groupServerUid NSString 群 ServerUid
customProperties NSDictionaryNSString, NSObject 群自定义属性集
block GroupOperationBlock 结果函数

# 群备注更新

调用下面的方法更新群备注

NSDictionary<NSString*, NSObject*> *tag = [NSDictionary dictionary];
[tag setObject:@"object" forKey:@"key"];
[JCGroupWrapper updateComment:@" 群 ServerUid" nickName:@"群备注名" tag:tag usingBlock:^(bool, int, NSObject * _Nullable) {
    NSLog(@"群备注更新");
}];

输入参数介绍:

参数 类型 说明
groupServerUid NSString 群 ServerUid
nickName NSString 群备注名
tag NSDictionaryNSString, NSObject 额外信息,可以自定义
block GroupOperationBlock 结果函数

# 更改群名称

调用下面的方法更改群名称

[JCGroupWrapper changeGroupName:@" 群 ServerUid" groupName:@"群名字" usingBlock:^(bool, int, NSObject * _Nullable) {
    NSLog(@"更改群名称");
}];

输入参数介绍:

参数 类型 说明
groupServerUid NSString 群 ServerUid
groupName NSString 群名字
block GroupOperationBlock 结果函数

# 上传群头像

调用下面的方法上传群头像,最终是群的 customProperties 属性会增加 “Icon” 字段,存的是服务器文件链接。

[JCGroupWrapper updateGroupIcon:@" 群 ServerUid" path:@"头像文件路径" usingBlock:^(bool, int, NSObject * _Nullable) {
    NSLog(@"上传群头像");
}];

输入参数介绍:

参数 类型 说明
groupServerUid NSString 群 ServerUid
path NSString 头像文件路径
block GroupOperationBlock 结果函数

# 更新群详情

调用下面的方法更新群详情

[JCGroupWrapper refreshGroupInfo:@" 群 ServerUid" usingBlock:^(bool, int, NSObject * _Nullable) {
    NSLog(@"更新群信息");
}];

输入参数介绍:

参数 类型 说明
groupServerId NSString 群 serverUid
block GroupOperationBlock 结果函数

# 拉取服务器更新

调用下面的方法拉取服务器更新

[JCGroupWrapper refreshGroups:^(bool, int, NSObject * _Nullable) {
    NSLog(@"拉取服务器更新");
}];

输入参数介绍:

参数 类型 说明
block GroupOperationBlock 结果函数

# 相关回调

更新群会触发 onGroupUpdate 回调

-(void)onGroupUpdate:(JCGroupData*)group {
    NSLog(@"更新群");
}

参数介绍:

参数 类型 说明
group JCGroupData JCGroupData 对象

# 查询群组

# 查询所有群组

调用下面的方法查询所有群组

NSArray<JCGroupData*>* groupAry = [JCCloudDatabase queryGroups];

其中,JCGroupData 为群组对象,详细信息请参考 API reference。

返回值介绍:

返回值类型 说明
NSArrayJCGroupData 群组列表

# 查询创建的群

调用下面的方法查询创建的群

NSArray<JCGroupData*> * groupData = [JCCloudDatabase queryOwnedGroups:@"创建者 serverUid"];

输入参数介绍:

参数 类型 说明
memberSeverUid NSString 创建者 serverUid

返回值介绍:

返回值类型 说明
NSArrayJCGroupData 群列表

# 查询加入的群

调用下面的方法查询加入的群

NSArray<JCGroupData*> * groupData = [JCCloudDatabase queryJoinedGroups:@"成员 serverUid"];

输入参数介绍:

参数 类型 说明
memberSeverUid NSString 成员 serverUid

返回值介绍:

返回值类型 说明
NSArray<JCGroupData*> 群列表

# 查询单个群组

调用下面的方法查询单个群组

JCGroupData * groupData = [JCCloudDatabase queryGroup:@"群服务器 uid"];

输入参数介绍:

参数 类型 说明
serverUid NSString 服务器会话 uid

返回值介绍:

返回值类型 说明
JCGroupData 群组对象

# 查询单个成员

调用下面的方法查询单个成员

JCGroupMemberData * groupMemberData = [JCCloudDatabase queryGroupMember:@"群服务器 uid" memberServerUid:@"成员ServerUid"];

输入参数介绍:

参数 类型 说明
serverUid NSString 服务器会话 uid
memberServerUid NSString 成员ServerUid

返回值介绍:

返回值类型 说明
JCGroupMemberData 群成员对象

# 查询群成员列表

调用下面的方法群成员列表

NSArray<JCGroupMemberData*> * groupMemberData = [JCCloudDatabase queryGroupMembers:@"群服务器 uid"];

输入参数介绍:

参数 类型 说明
serverUid NSString 群服务器 uid

返回值介绍:

返回值类型 说明
NSArray<JCGroupMemberData*> 成员列表

其中,JCGroupMemberData 为群成员信息,详细信息请参考 API reference。

# 搜索包括关键字的群

调用下面的方法搜索包括关键字的群

//搜索包括关键字的群(群名,群别名,群成员),没有匹配成员则 JCGroupSearchData 的 member 为空
NSArray<JCGroupSearchData*> * groupSearchData = [JCCloudDatabase searchGroup:@"搜索关键字" includNickName:false];

输入参数介绍:

参数 类型 说明
key NSString 搜索关键字
includNickName bool 是否包含搜索群的 nickName

返回值介绍:

返回值类型 说明
NSArray<JCGroupSearchData*> 群搜索数据列表

其中,JCGroupSearchData 有下面的属性

/// 群
@property (nonatomic, strong) JCGroupData* group;
/// 成员列表
@property (nonatomic, strong) JCGroupMemberData* member;