群组

群组功能概述

SDK 提供3中群组类型分别为普通群、固定群、部门群,固定群和部门群都只能由后台创建,且移动端不能进行退群操作。部门群是在组织架构创建部门的时候,可以选择是否创建部门群 ,适用于部门内部。

typedef NS_ENUM(NSInteger, QDGroupType) {
QDGroupTypePro = 0, /** 个人群*/
QDGroupTypeFix = 1, /** 固定群*/
QDGroupTypeDepart = 3, /** 部门群*/
};

获取群组

SDK 在登录成功后,会对本地群信息进行同步,所以一般只需要调用本地缓存接口获取群就可以了。SDK 提供了批量获取自己群的接口、以及根据群类型和单个群 id 查询的接口。 同样 SDK 也提供了远程获取群信息的接口。

本地获取
本地获取所有群组

@interface QDDataHandler : NSObject

/**
 获取群组列表
 */
+ (NSArray *)getGroupList;

@end

本地根据群 Id 获取群组

@interface QDDataHandler : NSObject

/**
 根据群组ID获取群组

 @param groupID 群组ID
 @return 群组对象
 */
+ (QDGroup *)getGroupByGroupID:(NSString *)groupID;

@end

远程获取群组列表

@interface QDIM: NSObject

/**
 获取自己的群组列表
 */
- (void)getMyGroupsCompletion:(void (^ __nullable )(NSArray<QDGroup *> *groups, NSError *error))completionBlock;

@end

创建群组

@interface QDIM: NSObject

/**
 创建群组

 @param groupName 群组名称
 @param userList  用户数组
 @param pic 用户的ID数组
 @param desc 群组描述
 */
- (void)createGroup:(NSString *)groupName
           userList:(NSArray<QDUser *> *)userList
                pic:(nullable NSString *)pic
           describe:(nullable NSString *)desc
         completion:(void(^ __nullable )(QDGroup *group, NSError *error))completionBlock;

@end

添加群成员

/**
 群组邀请

 @param groupID  群组ID
 @param userList 邀请用户列表
 @param completionBlock 回调
 */
- (void)inviteGroupMembersForGroupID:(NSString *)groupID
                            userList:(NSArray<QDUser *> *)userList
                          completion:(void(^ __nullable )(NSError *error))completionBlock;

退出群组

/**
 退出群组

 @param groupID  群组ID
 @param completionBlock 回调
 */
- (void)quitGroupForGroupID:(NSString *)groupID
                 completion:(void(^ __nullable)(NSError *error))completionBlock;

群组踢人

/**
 群组踢人

 @param groupID  群组ID
 @param userList 用户列表(用户ID)
 @param completionBlock 回调
 */
- (void)removeGroupMembersForGroupID:(NSString *)groupID
                            userList:(NSArray *)userList
                          completion:(void(^ __nullable )(NSError *error))completionBlock;

解散群组

/**
 解散群组

 @param groupID 群组ID
 @param completionBlock 回调
 */
- (void)dissolveGroupForGroupID:(NSString *)groupID
                     completion:(void(^ __nullable)(NSError *error))completionBlock;

下面是修改群信息的相关接口

/**
 修改群组名称

 @param groupID   群组ID
 @param groupName 新的群组名称
 @param completionBlock 回调
 */
- (void)modifyGroupNameForGroupID:(NSString *)groupID
                        groupName:(NSString *)groupName
                       completion:(void(^ __nullable )(NSError *error))completionBlock;


/**
 修改群组头像

 @param groupID     群组ID
 @param groupAvatar 新的群组头像地址
 @param completionBlock 回调
 */
- (void)modifyGroupAvatarForGroupID:(NSString *)groupID
                        groupAvatar:(NSString *)groupAvatar
                         completion:(void(^ __nullable )(NSError *error))completionBlock;

/**
 修改群组描述

 @param groupID    群组ID
 @param groupIntro 新的群组描述
 @param completionBlock 回调
 */
- (void)modifyGroupIntroForGroupID:(NSString *)groupID
                        groupIntro:(NSString *)groupIntro
                        completion:(void(^ __nullable)(NSError *error))completionBlock;


/**
 获取群公告列表

 @param groupID 群组ID
 @param completionBlock 回调
 */
- (void)getGroupNoticeListForGroupID:(NSString *)groupID
                          completion:(void (^ __nullable )(NSArray<QDGroupNotice *> *groupNotices, NSError *error))completionBlock;

/**
 新增群公告

 @param groupID 群组ID
 @param groupNotice     群公告
 @param completionBlock 回调
 */
- (void)addGroupNoticeForGroupID:(NSString *)groupID
                     groupNotice:(NSString *)groupNotice
                      completion:(void(^ __nullable)(QDGroupNotice *groupNotice, NSError *error))completionBlock;

/**
 删除群公告

 @param groupID 群组ID
 @param groupNoticeID 群公告ID
 @param completionBlock 回调
 */
- (void)removeGroupNoticeForGroupID:(NSString *)groupID
                      GroupNoticeID:(NSString *)groupNoticeID
                         completion:(void(^ __nullable)(NSError *error))completionBlock;

/**
 修改群昵称

 @param groupID  群组ID
 @param userID   用户ID
 @param nickname 用户昵称
 @param completionBlock 回调
 */
- (void)modifyGroupNicknameForGroupID:(NSString *)groupID
                               userID:(NSString *)userID
                             nickname:(NSString *)nickname
                           completion:(void(^ __nullable)(NSError *error))completionBlock;

/**
 转让群主

 @param groupID 群组ID
 @param userID  要转让的用户ID
 @param completionBlock 回调
 */
- (void)transferGroupOwnerForGroupID:(NSString *)groupID
                            toUserID:(NSString *)userID
                          completion:(void(^ __nullable)(NSError *error))completionBlock;

/**
 设置/取消群管理员

 @param groupID 群组ID
 @param userID  用户ID
 @param isAdministrator 是否是管理员
 @param completionBlock 回调
 */
- (void)setGroupManagerForGroupID:(NSString *)groupID
                           userID:(NSString *)userID
                  isAdministrator:(BOOL)isAdministrator
                       completion:(void(^ __nullable)(NSError *error))completionBlock;

/**
 获取群共享的文件列表

 @param groupID         群组ID
 @param completionBlock 回调
 */
- (void)getGroupShareFileListForGroupID:(NSString *)groupID
                             completion:(void(^ __nullable )(NSArray<QDFileModel *> * __nullable fileList, NSError * __nullable error))completionBlock;

/**
 删除群共享文件

 @param groupID 群组ID
 @param fileID  文件ID
 @param completionBlock 回调
 */
- (void)delGroupShareFileForGroupID:(NSString *)groupID
                             fileID:(NSString *)fileID
                          compltion:(void(^ __nullable)(NSError * __nullable error))completionBlock;

/**
 设置群消息屏蔽

 @param groupID  群组ID
 @param isShield 是否屏蔽
 @param completionBlock 回调
 */
- (void)setGroupMsgShieldForGroupID:(NSString *)groupID
                           isShield:(BOOL)isShield
                          compltion:(void(^ __nullable)(NSError * __nullable error))completionBlock;

/**
 设置群禁言(只允许群组或者全管理员发消息)

 @param groupID  群组ID
 @param isShutup 是否禁言
 @param completionBlock 回调
 */
- (void)setGroupShutupForGroupID:(NSString *)groupID
                        isShutup:(BOOL)isShutup
                       compltion:(void(^ __nullable)(NSError * __nullable error))completionBlock;

协议监听 QDGroupManagerDelegate

通过 以下接口来添加和移除监听

/**
 添加群组委托
 
 @param delegate 群组委托
 */
- (void)addGroupDelegate:(id<QDGroupManagerDelegate>)delegate;

/**
 删除群组委托
 
 @param delegate 群组委托
 */
- (void)removeGroupDelegate:(id<QDGroupManagerDelegate>)delegate;

@protocol QDGroupManagerDelegate <NSObject>

@optional;

/**
 群组增加回调

 @param group 添加的群组
 */
- (void)onGroupAdded:(QDGroup *)group;

/**
 群组更新回调

 @param group 更新的群组
 */
- (void)onGroupUpdated:(QDGroup *)group;

/**
 群组移除回调

 @param group 被移除的群组
 */
- (void)onGroupRemoved:(QDGroup *)group;

/**
 群组成员变动回调,包括数量增减以及成员属性变动

 @param group 变动的群组
 */
- (void)onGroupMemeberChanged:(QDGroup *)group;

@end