群组管理

概述

把多个 username 加入到同一个群组内,在群组内发送群组消息。

  • 创建私有群组、创建公开群组(3.4.0版本新增公开群组
  • 加入,退出群组;
  • 加群组成员、移除群组成员;
  • 群组管理员
  • 申请加入和审批
  • 禁言、消息屏蔽
  • 群@功能

创建群组

群组分为私有群组、公开群组。

  • 私有群组无法申请加入,群内成员邀请即可加入。
  • 公开群组可通过获取公开群组列表获取。
  • 公开群组可通过发起加入申请,群主或管理员审核通过的方式加入。
  • 公开群组群主或管理员直接邀请即可加入,群成员邀请入群需群主或管理员审批。

创建私有群组

  1. /*!
  2. * @abstract 创建群组(只能创建私有群)
  3. *
  4. * @param groupName 群组名称
  5. * @param groupDesc 群组描述信息
  6. * @param usernameArray 初始成员列表。NSArray 里的类型是 NSString
  7. * @param handler 结果回调。正常返回 resultObject 的类型是 JMSGGroup。
  8. *
  9. * @discussion 向服务器端提交创建群组请求,返回生成后的群组对象.
  10. * 返回群组对象, 群组ID是App 需要关注的, 是后续各种群组维护的基础.
  11. */
  12. + (void)createGroupWithName:(NSString * JMSG_NULLABLE )groupName
  13. desc:(NSString *JMSG_NULLABLE)groupDesc
  14. memberArray:(NSArray JMSG_GENERIC(__kindof NSString *) *JMSG_NULLABLE)usernameArray
  15. completionHandler:(JMSGCompletionHandler JMSG_NULLABLE)handler;

创建公开群组

Since 3.4.0
3.4.0版本新增公开群组类型。公开群组可通过入群申请,经群主或管理员审核通过的方式加入。公开群组群主或管理员直接邀请即可加入。群成员邀请入群需群主或管理员审批 入群申请与审批

  1. /*!
  2. * @abstract 创建群组(可创建私有群、公开群)
  3. *
  4. * @param groupInfo 群信息类,如:群名、群类型等,详细请查看 JMSGGroupInfo 类
  5. * @param usernameArray 初始成员列表。NSArray 里的类型是 NSString
  6. * @param handler 结果回调。正常返回 resultObject 的类型是 JMSGGroup。
  7. *
  8. * @discussion 向服务器端提交创建群组请求,返回生成后的群组对象.
  9. * 返回群组对象, 群组ID是App 需要关注的, 是后续各种群组维护的基础.
  10. */
  11. + (void)createGroupWithGroupInfo:(JMSGGroupInfo *)groupInfo
  12. memberArray:(NSArray JMSG_GENERIC(__kindof NSString *) *JMSG_NULLABLE)usernameArray
  13. completionHandler:(JMSGCompletionHandler JMSG_NULLABLE)handler;

解散群组

  1. /*!
  2. * @abstract 解散群组
  3. *
  4. * @patam gid 需要解散的群组 id
  5. * @param handler 结果回调,error = nil 表示操作成功
  6. *
  7. * @discussion 只有群主才有权限解散群。
  8. */
  9. + (void)dissolveGroupWithGid:(NSString *)gid handler:(JMSGCompletionHandler)handler;

群组信息

获取群信息

  1. /*!
  2. * @abstract 获取群组信息
  3. *
  4. * @param groupId 待获取详情的群组ID
  5. * @param handler 结果回调. 正常返回时 resultObject 类型是 JMSGGroup.
  6. *
  7. * @discussion 如果考虑性能损耗, 在群聊时获取群组信息, 可以获取 JMSGConversation -> target 属性.
  8. */
  9. + (void)groupInfoWithGroupId:(NSString *)groupId
  10. completionHandler:(JMSGCompletionHandler)handler;

更新群信息

为了上层在修改群信息时更加方便、快捷的实现,SDK 新增了群信息类 JMSGGroupInfo,在修改群信息时可以实现一个接口修改多个信息,具体如下:

JMSGGroupInfo

属性 类型 说明
gid NSString 群 id
name NSString 群名称
desc NSString 群描述
avatarData NSData 群头像数据,此属性只用来修改群信息,切勿从此类拿来此属性来展示
avatar NSString 群头像的媒体文件ID
groupType JMSGGroupType 群组类型,私有、公开
maxMemberCount NSString 群组人数上限,注意:仅限于创建群组时可以设置,必须大于2
ctime SInt64 群组创建时间
  1. /*!
  2. * @abstract 更新群信息(统一字段上传)
  3. *
  4. * @param gid 群组 id
  5. * @param groupInfo 群信息类,详细请查看 JMSGGroupInfo 类
  6. * @param handler 结果回调. 正常返回时, resultObject 为 nil.
  7. *
  8. * @discussion 注意:修改群名称和群描述时参数不允许传空字符串,群类型不允许修改
  9. */
  10. + (void)updateGroupInfoWithGid:(NSString *)gid
  11. groupInfo:(JMSGGroupInfo *)groupInfo
  12. completionHandler:(JMSGCompletionHandler JMSG_NULLABLE)handler;

群头像

获取群头像

群组头像是有缩略图和大图之分的,具体请查看 API 文档,这里只列出缩略图接口。
接口都是优先返回本地缓存,如果本地没有则是会发起网络请求。

  1. /*!
  2. * @abstract 获取头像缩略图文件数据
  3. *
  4. * @param handler 结果回调。回调参数:
  5. *
  6. * - data 头像数据;
  7. * - objectId 群组 gid;
  8. * - error 不为nil表示出错;
  9. *
  10. * 如果 error 为 nil, data 也为 nil, 表示没有头像数据.
  11. *
  12. * @discussion 需要展示缩略图时使用。
  13. * 如果本地已经有文件,则会返回本地,否则会从服务器上下载。
  14. */
  15. - (void)thumbAvatarData:(JMSGAsyncDataHandler)handler;
更新群头像

修改头像有单独的接口,并且支持附带图片格式,上层也可以通过更新群信息的统一修改接口上传头像。

  1. /*!
  2. * @abstract 更新群头像(支持传图片格式)
  3. *
  4. * @param groupId 待更新的群组ID
  5. * @param avatarData 头像数据
  6. * @param avatarFormat 头像格式,可以为空,不包括"."
  7. * @param handler 回调
  8. *
  9. * @discussion 头像格式参数直接填格式名称,不要带点。正确:@"png",错误:@".png"
  10. */
  11. + (void)updateGroupAvatarWithGroupId:(NSString *JMSG_NONNULL)groupId
  12. avatarData:(NSData *JMSG_NONNULL)avatarData
  13. avatarFormat:(NSString *JMSG_NULLABLE)avatarFormat
  14. completionHandler:(JMSGCompletionHandler JMSG_NULLABLE)handler;
获取头像本地路径
  1. /*!
  2. * @abstract 获取头像缩略文件的本地路径
  3. *
  4. * @return 返回本地路,返回值只有在下载完成之后才有意义
  5. */
  6. - (NSString *JMSG_NULLABLE)thumbAvatarLocalPath;

修改群类型

  1. /*!
  2. * @abstract 修改群组类型
  3. *
  4. * @param type 群类型,公开群、私有群
  5. * @param handler 结果回调。error = nil 表示成功
  6. *
  7. * @discussion 对于已经创建的群组,可以通过此接口来修改群组的类型
  8. */
  9. - (void)changeGroupType:(JMSGGroupType)type handler:(JMSGCompletionHandler)handler;

群成员信息

群组成员是由 JMSGUser 对象组成的,但是群成员有更多的独有属性,如:群昵称、入群时间等,所以从 JMessage v3.7.0 开始新建群组成员信息类 JMSGGroupMemberInfo。 在 JMSGGroupMemberInfo 类中包含了群成员 JMSGUser 对象、群昵称、入群时间、成员角色等属性。

JMSGGroupMemberInfo

属性 类型 说明
user JMSGUser 成员用户信息
ctime UInt64 入群时间
groupNickname NSString 群成员群昵称
memberType JMSGGroupMemberType 群成员身份,0:普通成员 1:群主 2:管理员

群成员管理

获取群成员列表

  1. /*!
  2. * @abstract 获取所有群成员信息列表
  3. *
  4. * @handler 成员列表. 类型为 NSArray,里面元素为 JMSGGroupMemberInfo.
  5. *
  6. * @discussion 返回数据中的 JMSGGroupMemberInfo 包含了成员 user 信息、入群时间、群昵称等
  7. */
  8. - (void)memberInfoList:(JMSGCompletionHandler JMSG_NULLABLE)handler;

添加群成员

注意: reason 字段只对公开群起作用

  1. /*!
  2. * @abstract 添加群组成员
  3. *
  4. * @param usernameArray 用户名数组。数组里的成员类型是 NSString
  5. * @param userAppKey 用户的 AppKey,这批添加的成员必须在同一个 AppKey 下的用户
  6. * @param reason 邀请原因,可选
  7. *
  8. * @param handler 结果回调。正常返回时 resultObject 为 nil.
  9. */
  10. - (void)addMembersWithUsernameArray:(NSArray JMSG_GENERIC(__kindof NSString *) *)usernameArray
  11. appKey:(NSString *JMSG_NULLABLE)userAppKey
  12. reason:(NSString *JMSG_NULLABLE)reason
  13. completionHandler:(JMSGCompletionHandler JMSG_NULLABLE)handler;

删除群成员

  1. /*!
  2. * @abstract 删除群组成员
  3. *
  4. * @param usernameArray 用户名数据. 数组里的成员类型是 NSString
  5. * @param handler 结果回调。正常返回时 resultObject 为 nil.
  6. */
  7. - (void)removeMembersWithUsernameArray:(NSArray JMSG_GENERIC(__kindof NSString *) *)usernameArray
  8. completionHandler:(JMSGCompletionHandler JMSG_NULLABLE)handler;

移交群主

  1. /*!
  2. * @abstract 移交群主
  3. *
  4. * @param username 新群主用户名
  5. * @param appkey 新群主用户 AppKey,不填则默认为本应用 AppKey
  6. * @param handler 结果回调。error 为 nil 表示成功.
  7. */
  8. - (void)transferGroupOwnerWithUsername:(NSString *JMSG_NONNULL)username
  9. appKey:(NSString *JMSG_NULLABLE)appkey
  10. completionHandler:(JMSGCompletionHandler JMSG_NULLABLE)handler;

设置群成员昵称

  1. /*!
  2. * @abstract 设置成员群昵称
  3. *
  4. * @param nickname 群昵称
  5. * @param username 目标用户的 username
  6. * @param appKey 目标用户的 appKey,若传入空则默认使用本应用appKey
  7. */
  8. - (void)setGroupNickname:(NSString *JMSG_NULLABLE)nickname
  9. username:(NSString *JMSG_NONNULL)username
  10. appKey:(NSString *JMSG_NULLABLE)appKey
  11. handler:(JMSGCompletionHandler JMSG_NULLABLE)handler;

群组管理员

  • 范围:私有群和公开群都增加管理员角色。
  • 描述:仅群主可对群管理员进行管理,可指定群内任意成员成为管理员,也可取消管理员身份。
  • 管理员权限:拥有普通群成员的所有基础功能和权限,除此之外还拥有更高的权限:设置禁言、审批入群.

获取管理员列表

  1. /*!
  2. * @abstract 管理员列表
  3. *
  4. * @return 管理员列表. NSArray 里成员类型是 JMSGUser
  5. *
  6. * @discussion 注意:返回列表中不包含群主;仅在获取群成员成功后此接口才有效
  7. */
  8. - (NSArray JMSG_GENERIC(__kindof JMSGUser *)*)groupAdminMembers;

添加管理员

  1. /*!
  2. * @abstract 添加管理员
  3. *
  4. * @param usernames 用户名列表
  5. * @param appkey 用户 AppKey,不填则默认为本应用 AppKey
  6. * @param handler 结果回调。error 为 nil 表示成功.
  7. *
  8. * @discussion 注意:非 VIP 应用最多设置 15 个管理员,不包括群主本身
  9. */
  10. - (void)addGroupAdminWithUsernames:(NSArray <__kindof NSString *>*)usernames
  11. appKey:(NSString *JMSG_NULLABLE)appkey
  12. completionHandler:(JMSGCompletionHandler JMSG_NULLABLE)handler;

删除管理员

  1. /*!
  2. * @abstract 删除管理员
  3. *
  4. * @param usernames 用户名 列表
  5. * @param appkey 用户 AppKey,不填则默认为本应用 AppKey
  6. * @param handler 结果回调。error 为 nil 表示成功.
  7. */
  8. - (void)deleteGroupAdminWithUsernames:(NSArray <__kindof NSString *>*)usernames
  9. appKey:(NSString *JMSG_NULLABLE)appkey
  10. completionHandler:(JMSGCompletionHandler JMSG_NULLABLE)handler;

群消息屏蔽

群组被设置为屏蔽之后,将收不到该群的消息。但是群成员变化事件还是能正常收到

设置群消息屏蔽

  1. /*!
  2. * @abstract 设置群组消息屏蔽
  3. *
  4. * @param isShield 是否群消息屏蔽 YES:是 NO: 否
  5. * @param handler 结果回调。回调参数: error 为 nil, 表示设置成功
  6. *
  7. * @discussion 针对单个群组设置群消息屏蔽
  8. */
  9. - (void)setIsShield:(BOOL)isShield handler:(JMSGCompletionHandler)handler;

判断群组是否被屏蔽

  1. /*!
  2. * @abstract 该群是否已被设置为消息屏蔽
  3. *
  4. * @discussion YES:是 , NO: 否
  5. */
  6. @property(nonatomic, assign, readonly) BOOL isShieldMessage;

获取当前用户的群屏蔽列表

  1. /*!
  2. * @abstract 获取所有设置群消息屏蔽的群组
  3. *
  4. * @param handler 结果回调。回调参数:
  5. *
  6. * - resultObject 类型为 NSArray,数组里成员的类型为 JMSGGroup
  7. * - error 错误信息
  8. *
  9. * 如果 error 为 nil, 表示设置成功
  10. * 如果 error 不为 nil,表示设置失败
  11. *
  12. * @discussion 从服务器获取,返回所有设置群消息屏蔽的群组。
  13. */
  14. + (void)shieldList:(JMSGCompletionHandler)handler;

群组@功能

消息发送方可以发一条带有@list的消息。 接收方收到带有@list的消息之后,如果@list中包含了自己,则在sdk默认弹出的通知栏提示中会有相应的提示,如”xxx在群中@了你”。

创建@群成员的消息

JMSGMessage

  1. /*!
  2. * @abstract 创建@人的群聊消息
  3. *
  4. * @param content 消息内容对象
  5. * @param groupId 群聊ID
  6. * @param at_list @对象的数组
  7. *
  8. * #### 注意:
  9. *
  10. * 1、单独调用此接口创建消息,SDK 不会本地保存消息,再调用发送接口时才会保存;
  11. *
  12. * 2、如果上层希望创建消息时就本地化保存,请使用 [JMSGConversation createMessageWithContent:]
  13. */
  14. + (JMSGMessage *)createGroupMessageWithContent:(JMSGAbstractContent *)content
  15. groupId:(NSString *)groupId
  16. at_list:(NSArray<__kindof JMSGUser *> *)at_list;

创建@全体群成员的消息

JMSGMessage

  1. /*!
  2. * @abstract 创建@所有人的群聊消息
  3. *
  4. * @param content 消息内容对象
  5. * @param groupId 群聊ID
  6. *
  7. * #### 注意:
  8. *
  9. * 1、单独调用此接口创建消息,SDK 不会本地保存消息,再调用发送接口时才会保存;
  10. *
  11. * 2、如果上层希望创建消息时就本地化保存,请使用 [JMSGConversation createMessageWithContent:]
  12. */
  13. + (JMSGMessage *)createGroupAtAllMessageWithContent:(JMSGAbstractContent *)content
  14. groupId:(NSString *)groupId;

判断消息是否@了自己

JMSGMessage

  1. /*!
  2. * @abstract 是否是@自己的消息(只针对群消息,单聊消息无@功能)
  3. */
  4. - (BOOL)isAtMe;

判断消息是否是@全体成员

JMSGMessage

  1. /*!
  2. * @abstract 是否是@所有人的消息(只针对群消息,单聊消息无@功能)
  3. */
  4. - (BOOL)isAtAll;

获取消息中@的群成员列表

JMSGMessage

  1. /*!
  2. * @abstract 获取消息体中所有@对象(只针对群消息,单聊消息无@功能)
  3. *
  4. * @param handler 结果回调。回调参数:
  5. *
  6. * - resultObject 类型为 NSArray,数组里成员的类型为 JMSGUser
  7. * 注意:如果该消息为@所有人消息时,resultObject 返回nil,可以通过 isAtAll 接口来判断是否是@所有人的消息
  8. * - error 错误信息
  9. *
  10. * 如果 error 为 nil, 表示获取成功
  11. * 如果 error 不为 nil,表示获取失败
  12. *
  13. * @discussion 从服务器获取,返回消息的所有@对象。
  14. */
  15. - (void)getAt_List:(JMSGCompletionHandler)handler;

发送@人消息

JMSGConversation

  1. /*!
  2. * @abstract 发送@人消息(已经创建好对象的)
  3. *
  4. * @param message 通过消息创建类接口,创建好的消息对象
  5. * @param userList @对象的数组
  6. *
  7. * @discussion 发送消息的多个接口,都未在方法上直接提供回调。你应通过 JMSGMessageDelegate中的onReceiveMessage: error:方法来注册消息发送结果
  8. */
  9. - (void)sendMessage:(JMSGMessage *)message at_list:(NSArray<__kindof JMSGUser *> *)userList;

发送@所有人消息

JMSGConversation

  1. /*!
  2. * @abstract 发送@所有人消息(已经创建好对象的)
  3. *
  4. * @param message 通过消息创建类接口,创建好的消息对象
  5. *
  6. * @discussion 发送消息的多个接口,都未在方法上直接提供回调。你应通过 JMSGMessageDelegate中的onReceiveMessage: error:方法来注册消息发送结果
  7. */
  8. - (void)sendAtAllMessage:(JMSGMessage *)message;

入群申请和审批

申请入群和审批,适用于公开群组

申请入群

  1. /*!
  2. * @abstract 申请加入群组
  3. *
  4. * @param gid 群组 gid
  5. * @param reason 申请原因
  6. * @param handler 结果回调
  7. *
  8. * @discussion 只有公开群需要申请才能加入,私有群不需要申请。
  9. */
  10. + (void)applyJoinGroupWithGid:(NSString *JMSG_NONNULL)gid
  11. reason:(NSString *JMSG_NULLABLE)reason
  12. completionHandler:(JMSGCompletionHandler)handler;
申请入群事件

申请入群事件JMSGApplyJoinGroupEvent,收到群成员申请入群通知时,SDK 将会抛出此事件通知上层。 具体处理方法见事件处理一节。

管理员审批入群申请

  1. /*!
  2. * @abstract 管理员审批入群申请
  3. *
  4. * @patam eventId 入取申请事件的 id,详情请查看 JMSGApplyJoinGroupEvent 类
  5. * @param gid 群组 gid
  6. * @param joinUser 入群的用户
  7. * @param applyUser 发起申请的的用户,如果是主动申请入群则和 member 是相同的
  8. * @param isAgree 是否同意申请,YES : 同意, NO: 不同意
  9. * @param reason 拒绝申请的理由,选填
  10. * @param handler 结果回调
  11. *
  12. * @discussion 只有管理员才有权限审批入群申请,SDK 不会保存申请入群事件(JMSGApplyJoinGroupEvent),上层可以自己封装再保存,或则归档直接保存,以便此接口取值调用。
  13. */
  14. + (void)processApplyJoinGroupEventID:(NSString *JMSG_NONNULL)eventId
  15. gid:(NSString *JMSG_NONNULL)gid
  16. joinUser:(JMSGUser *JMSG_NONNULL)joinUser
  17. applyUser:(JMSGUser *JMSG_NONNULL)applyUser
  18. isAgree:(BOOL)isAgree
  19. reason:(NSString *JMSG_NULLABLE)reason
  20. handler:(JMSGCompletionHandler)handler;

通过接收到的JMSGApplyJoinGroupEvent进行审批操作,审批不能多人操作,当一人同意或拒绝后其他管理者或群主会收到 JMSGGroupAdminApprovalEvent

管理员审批事件通知
  • 管理员拒绝入群申请事件 JMSGGroupAdminRejectApplicationEvent
  • 管理员审批事件 JMSGGroupAdminApprovalEvent,只有管理员会收到此事件

当有一个群管理员或群主审批过群成员审批事件, SDK 将会抛出此类事件通知上层, 只有该审批事件对应群的群主和群管理员会收到此事件。具体处理方法见事件处理一节

群成员禁言

禁言后用户可正常接收消息,但无法向被禁言的群组中发送消息,解禁后可正常发送消息。

老接口在 v3.8.1 过期,建议使用新接口。

群成员禁言设置

  1. /*!
  2. * @abstract 设置群成员禁言(可设置禁言时间)
  3. *
  4. * @param silenceTime 禁言时间戳,单位:毫秒,必须不小于5分钟,不大于1年
  5. * @param usernames 用户的 username 数组,一次最多500人
  6. * @param appKey 用户的 appKey,若传入空则默认使用本应用appKey,同一次设置的 usernames 必须在同一个 AppKey 下
  7. * @param handler 结果回调,error = nil 时,表示成功
  8. *
  9. * @discussion 只有群主和管理员可设置;设置成功的话上层会收到相应下发事件。
  10. *
  11. * @since 3.8.1
  12. */
  13. - (void)addGroupSilenceWithTime:(SInt64)silenceTime
  14. usernames:(NSArray *JMSG_NONNULL)usernames
  15. appKey:(NSString *JMSG_NULLABLE)appkey
  16. handler:(JMSGCompletionHandler JMSG_NULLABLE)handler;

取消群成员禁言

  1. /*!
  2. * @abstract 取消群成员禁言
  3. *
  4. * @param usernames 用户的 username 数组,一次最多500人
  5. * @param appKey 用户的 appKey,若传入空则默认使用本应用appKey,同一次设置的 usernames 必须在同一个 AppKey 下
  6. * @param handler 结果回调,error = nil 时,表示成功
  7. *
  8. * @discussion 只有群主和管理员可设置;取消成功的话上层会收到相应下发事件。
  9. *
  10. * @since 3.8.1
  11. */
  12. - (void)deleteGroupSilenceWithUsernames:(NSArray *JMSG_NONNULL)usernames
  13. appKey:(NSString *JMSG_NULLABLE)appkey
  14. handler:(JMSGCompletionHandler JMSG_NULLABLE)handler;

获取禁言列表

  1. /*!
  2. * @abstract 禁言列表
  3. *
  4. * @param handler 结果回调,resultObject 是 NSArray 类型,元素是 JMSGMemberSilenceInfo
  5. *
  6. * @discussion 返回的 JMSGMemberSilenceInfo 对象有 user 信息,通过 [JMSGGroup memberInfoWithUsername:appkey:] 可再次获取到 JMSGGroupMemberInfo 信息
  7. *
  8. * @since 3.8.1
  9. */
  10. - (void)getGroupMemberSilenceList:(JMSGCompletionHandler JMSG_NULLABLE)handler;

判断用户是否被禁言

  1. /*!
  2. * @abstract 获取禁言状态
  3. *
  4. * @param username 用户名
  5. * @param appKey 用户所在应用 AppKey,不填这默认本应用
  6. * @param handler 结果回调,resultObject 是 JMSGMemberSilenceInfo 类型;
  7. * 若 error == nil && resultObject != nil,该成员已被禁言;
  8. * 若 error == nil && resultObject == nil,该成员未被禁言;
  9. * 若 error != nil ,请求失败。
  10. *
  11. * @discussion 返回的 JMSGMemberSilenceInfo 对象有 user 信息,通过 [JMSGGroup memberInfoWithUsername:appkey:] 可再次获取到 JMSGGroupMemberInfo 信息
  12. *
  13. * @since 3.8.1
  14. */
  15. - (void)getGroupMemberSilenceWithUsername:(NSString *JMSG_NONNULL)username
  16. appKey:(NSString *JMSG_NULLABLE)appKey
  17. handler:(JMSGCompletionHandler JMSG_NULLABLE)handler;

群公告

  • 支持群主和管理员进行发布、删除、置顶和取消置顶操作;
  • 目前单个群最大群公告数量为 100

JMSGGroupAnnouncement

属性/方法 类型/返回值 说明
announcementId UInt32 公告 id
gid NSString 群组 id
text NSString 公告内容
publisher JMSGUser 发布者
publishTime UInt64 发布时间
isTop BOOL 是否置顶
topTime UInt64 置顶时间
toJsonString NSString 公告对象转换为 JSON 字符串
fromJson: JMSGGroupAnnouncement 将合法的 json 字符串转为公告对象

发布群公告

发布群公告时,开发者可选择是否发送群消息通知群成员,或者自己定制消息通知其他群成员。

  1. /*!
  2. * @abstract 发布群公告
  3. *
  4. * @param announcement 公告内容,大小必须在 1KB 以内
  5. * @param sendMessage 发布成功后是否需要发一条消息通知群成员,默认:YES
  6. * @param handler 结果回调。resultObject 为 JMSGGroupAnnouncement对象, error 为 nil 表示成功.
  7. *
  8. * @discussion
  9. * #### 注意:
  10. *
  11. * 如果 sendMessage = NO,则 SDK 不会自动发送消息,上层可以在回调或者收到事件后,自己发送消息;
  12. * 如果 sendMessage = YES,则在发布公告成功后 SDK 会自动在群里发布一条文本消息,文本内容就是公告内容,另外消息的 extras 里会附带公告的相关数据,上层可根据此数据将 message 对应到相应的公告, extras 里的 key-value 如下,
  13. *
  14. *
  • key(String) = “jmessage_group_announcement”
  • value(JsonString) = {
  • “id” : 公告 id,
  • “text” : 公告内容 text,
  • “publisher_uid” : 发布者 uid,
  • “ctime” : 公告发布时间,
  • “isTop” : 是否置顶,
  • “topTime” : 置顶时间,
  • “gid” : 群 gid
  • }
  • ```
  • 群公告最多100条,发布公告后会有对应事件下发,上层通过 [JMSGGroupDelegate onReceiveGroupAnnouncementEvents:] 监听 *
  • @since 3.8.0 */
    • (void)publishGroupAnnouncement:(NSString *JMSG_NONNULL)announcement
      1. sendMessage:(BOOL)sendMessage
      2. handler:(JMSGCompletionHandler JMSG_NULLABLE)handler;
      ```

获取群公告

  1. /*!
  2. * @abstract 获取群公告列表
  3. *
  4. * @param handler 结果回调。resultObject 是 NSArray 类型,元素是 JMSGGroupAnnouncement
  5. *
  6. * @since 3.8.0
  7. */
  8. - (void)groupAnnouncementList:(JMSGCompletionHandler JMSG_NULLABLE)handler;

删除群公告

  1. /*!
  2. * @abstract 删除群公告
  3. *
  4. * @param announcementID 公告id
  5. * @param handler 结果回调。error 为 nil 表示成功.
  6. *
  7. * @discussion 删除公告后会有对应事件下发,上层通过 [JMSGGroupDelegate onReceiveGroupAnnouncementEvents:] 监听
  8. * @since 3.8.0
  9. */
  10. - (void)deleteGroupAnnouncement:(NSString *JMSG_NONNULL)announcementID
  11. handler:(JMSGCompletionHandler JMSG_NULLABLE)handler;

置顶群公告

  1. /*!
  2. * @abstract 置顶/取消置顶 群公告
  3. *
  4. * @param isTop 置顶参数,YES:置顶,NO:取消置顶
  5. * @param ID 公告 id
  6. * @param handler 结果回调。error 为 nil 表示成功.
  7. *
  8. * @discussion 置顶公告后会有对应事件下发,上层通过 [JMSGGroupDelegate onReceiveGroupAnnouncementEvents:] 监听
  9. * @since 3.8.0
  10. */
  11. - (void)setGroupAnnouncementTop:(BOOL)isTop
  12. announcementID:(NSString *JMSG_NONNULL)ID
  13. handler:(JMSGCompletionHandler JMSG_NULLABLE)handler;

群组黑名单

  • 由群主和管理员管理,被拉入黑名单用户会被主动踢出群组,且无法再次加入

黑名单列表

  1. /*!
  2. * @abstract 群黑名单列表
  3. *
  4. * @handler 结果回调. resultObject 是 NSArray 类型,元素是 JMSGUser
  5. *
  6. * @since 3.8.0
  7. */
  8. - (void)groupBlacklistHandler:(JMSGCompletionHandler JMSG_NULLABLE)handler;

添加黑名单

  1. /*!
  2. * @abstract 添加群黑名单
  3. *
  4. * @param usernames 用户名列表
  5. * @param appkey 用户 appKey,usernames 中的所有用户必须在同一个 AppKey 下,不填则默认为本应用 appKey
  6. * @param handler 结果回调。error 为 nil 表示成功.
  7. *
  8. * @discussion 黑名单上限100个,超出将无法设置成功,被拉入黑名单用户会被主动踢出群组,且无法再次加入.
  9. * @since 3.8.0
  10. */
  11. - (void)addGroupBlacklistWithUsernames:(NSArray <__kindof NSString *>*)usernames
  12. appKey:(NSString *JMSG_NULLABLE)appKey
  13. handler:(JMSGCompletionHandler JMSG_NULLABLE)handler;

移除黑名单

  1. /*!
  2. * @abstract 删除群黑名单
  3. *
  4. * @param usernames 用户名列表
  5. * @param appkey 用户 appKey,usernames 中的所有用户必须在同一个 AppKey 下,不填则默认为本应用 appKey
  6. * @param handler 结果回调。error 为 nil 表示成功.
  7. *
  8. * @since 3.8.0
  9. */
  10. - (void)deleteGroupBlacklistWithUsernames:(NSArray <__kindof NSString *>*)usernames
  11. appKey:(NSString *JMSG_NULLABLE)appKey
  12. handler:(JMSGCompletionHandler JMSG_NULLABLE)handler;

群组免打扰

是否设置免打扰

  1. /*!
  2. * @abstract 该群是否已被设置为免打扰
  3. *
  4. * @discussion YES:是 , NO: 否
  5. */
  6. @property(nonatomic, assign, readonly) BOOL isNoDisturb;

设置免打扰

  1. /*!
  2. * @abstract 设置群组消息免打扰(支持跨应用设置)
  3. *
  4. * @param isNoDisturb 是否免打扰 YES:是 NO: 否
  5. * @param handler 结果回调。回调参数:
  6. *
  7. * - resultObject 相应对象
  8. * - error 错误信息
  9. *
  10. * 如果 error 为 nil, 表示设置成功
  11. * 如果 error 不为 nil,表示设置失败
  12. *
  13. * @discussion 针对单个群组设置免打扰
  14. * 这个接口支持跨应用设置免打扰
  15. */
  16. - (void)setIsNoDisturb:(BOOL)isNoDisturb handler:(JMSGCompletionHandler)handler;

获取免打扰列表

  1. /*!
  2. * @abstract 用户免打扰列表
  3. *
  4. * @param handler 结果回调。回调参数:
  5. *
  6. * - resultObject 类型为 NSArray,数组里成员的类型为 JMSGUser、JMSGGroup
  7. * - error 错误信息
  8. *
  9. * 如果 error 为 nil, 表示设置成功
  10. * 如果 error 不为 nil,表示设置失败
  11. *
  12. * @discussion 从服务器获取,返回用户的免打扰列表。
  13. * 建议开发者在 SDK 完全启动之后,再调用此接口获取数据
  14. */
  15. + (void)noDisturbList:(JMSGCompletionHandler)handler;