// // JCGroup.h // JCSDKOC // // Created by maikireton on 2017/8/15. // Copyright © 2017年 juphoon. All rights reserved. // #import #import "JCGroupCallback.h" #import "JCGroupConstants.h" #import "JCGroupItem.h" /** * @defgroup 群组模块 * @{ * 用于管理群组 */ /** * 群操作类 */ @interface JCGroup : NSObject /** * 创建 JCGroup 对象 * * JCGroup 的所有接口函数,如无特殊说明,都建议在主线程调用 * * @note * - 调用此方法创建 JCGroup 对象后,期间没有调用过 {@link destroy} 方法销毁对象,然后又重复调用此方法,会直接返回第一次创建的 JCGroup 对象 * - 调用此方法前确保 JCClient 已完成初始化,即 @ref JCClient.state "state" 状态值不等于 @ref JCClientStateNotInit * * @param client JCClient 对象 * @param callback JCGroupCallback 回调接口,用于回调相关通知 * @return 返回 JCGroup 对象 * @exception "JCClient、JCGroupCallback 任意一个参数传空就会出现调用异常" */ +(JCGroup* __nullable)create:(JCClient* __nonnull)client callback:(id __nonnull)callback; /** * 销毁 JCGroup 对象 * * 该方法为同步调用,需要等待 JCGroup 实例资源释放后才能执行其他操作,调用此方法后,你将无法再使用 JCGroup 的其它方法和回调。
* 我们 **不建议** 在 JCSDK 的回调中调用此方法销毁 JCGroup 对象,否则会出现崩溃。
* 如需在销毁后再次创建 JCGroup 实例,需要等待 @ref destroy 方法执行结束后再创建实例。 */ +(void)destroy; /** * 获取当前用户加入的群列表 * * @param updateTime 最新一次记录的群列表服务器更新时间 * @return * - >0:操作id,结果通过 {@link JCGroupCallback#onFetchGroups:result:reason:groups:updateTime:baseTime:fullUpdate: onFetchGroups} 回调 * - -1:调用失败,不会收到回调 */ -(int)fetchGroups:(long)updateTime; /** * 刷新群组信息 * * @param groupId 群标识 * @param updateTime 最新一次记录的该群服务器更新时间 * @return * - >0:操作id,结果通过 {@link JCGroupCallback#onFetchGroupInfo:result:reason:groupItem:members:updateTime:baseTime:fullUpdate: onFetchGroupInfo} 回调 * - -1:调用失败,不会收到回调 */ -(int)fetchGroupInfo:(NSString* __nonnull)groupId updateTime:(long)updateTime; /** * 创建群 * * @param members JCGroupMember 列表 * @param groupName 群名称 * @param type 群类型: * - @ref JCGroupTypeDiscussion : 讨论组 * - @ref JCGroupTypeNormal : 普通群 * @param customProperties 自定义属性 * @return * - >0:操作id,结果通过 {@link JCGroupCallback#onCreateGroup:result:reason:groupItem:updateTime:baseTime: onCreateGroup} 回调 * - -1:调用失败,不会收到回调 */ -(int)createGroup:(NSArray* __nonnull)members groupName:(NSString* __nonnull)groupName type:(JCGroupType)type customProperties:(NSDictionary* __nullable)customProperties; /** * 更新群 * * @param groupItem JCGroupItem 对象,其中 JCGroupItem 中 @ref JCGroupItem.changeState "changeState" 值不影响具体操作 * @return * - >0:操作id,结果通过 {@link JCGroupCallback#onCreateGroup:result:reason:groupItem:updateTime:baseTime: onCreateGroup} 回调 * - -1:调用失败,不会收到回调 */ -(int)updateGroup:(JCGroupItem* __nonnull)groupItem; /** * 解散群组 * * @note 群拥有者才能解散群组 * * @param groupId 群标识 * @return * - >0:操作id,结果通过 {@link JCGroupCallback#onDissolve:result:reason:groupId: onDissolve} 回调 * - -1:调用异常,不会收到回调通知 */ -(int)dissolve:(NSString* __nonnull)groupId; /** * 离开群组 * * @param groupId 群标识 * @return * - >0:操作id,结果通过 {@link JCGroupCallback#onLeave:result:reason:groupId: onLeave} 回调 * - -1:调用异常,不会收到回调通知 */ -(int)leave:(NSString* __nonnull)groupId; /** * 操作成员 * * @param groupId 群标识 * @param members JCGroupMember 对象列表,通过 @ref JCGroupItem.changeState "changeState" 值来表明增加,更新,删除成员操作 * @return * - >0:操作id,结果通过 {@link JCGroupCallback#onDealMembers:result:reason:groupId: onDealMembers} 回调 * - -1:调用异常,不会收到回调通知 */ -(int)dealMembers:(NSString* __nonnull)groupId members:(NSArray* __nonnull)members; /** * 更新群备注信息 * * @note 仅自己可见 * * @param groupId 群标识 * @param nickName 备注名 * @param tagMap 额外信息 * @return * - >0:操作id,结果通过 {@link JCGroupCallback#onUpdateGroupComment:result:reason:groupId: onUpdateGroupComment} 回调 * - -1:调用异常,不会收到回调通知 */ -(int)updateGroupComment:(NSString* __nonnull)groupId nickName:(NSString* __nonnull)nickName tag:(NSDictionary* __nullable)tag; /** * 设置免打扰 * * * * @param groupId 群标识 * @param dnd 是否免打扰 * - true: 免打扰, * - false: 取消免打扰 * @return * - >0:操作id,结果通过 {@link JCGroupCallback#onSetGroupDnd:result:reason:groupId: onSetGroupDnd} 回调 * - -1:调用异常,不会收到回调通知 */ -(int)setDnd:(NSString* __nonnull)groupId dnd:(bool)dnd; @end /** * @} */