群组管理

概述

把多个 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.03.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

属性类型说明
gidNSString群 id
nameNSString群名称
descNSString群描述
avatarDataNSData群头像数据,此属性只用来修改群信息,切勿从此类拿来此属性来展示
avatarNSString群头像的媒体文件ID
groupTypeJMSGGroupType群组类型,私有、公开
maxMemberCountNSString群组人数上限,注意:仅限于创建群组时可以设置,必须大于2
ctimeSInt64群组创建时间
  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

属性类型说明
userJMSGUser成员用户信息
ctimeUInt64入群时间
groupNicknameNSString群成员群昵称
memberTypeJMSGGroupMemberType群成员身份,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
属性/方法类型/返回值说明
announcementIdUInt32公告 id
gidNSString 群组 id
textNSString 公告内容
publisherJMSGUser发布者
publishTimeUInt64发布时间
isTopBOOL是否置顶
topTimeUInt64置顶时间
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. * ```
  15. * key(String) = "jmessage_group_announcement"
  16. * value(JsonString) = {
  17. * "id" : 公告 id,
  18. * "text" : 公告内容 text,
  19. * "publisher_uid" : 发布者 uid,
  20. * "ctime" : 公告发布时间,
  21. * "isTop" : 是否置顶,
  22. * "topTime" : 置顶时间,
  23. * "gid" : 群 gid
  24. * }
  25. * ```
  26. * 群公告最多100条,发布公告后会有对应事件下发,上层通过 [JMSGGroupDelegate onReceiveGroupAnnouncementEvents:] 监听
  27. *
  28. * @since 3.8.0
  29. */
  30. - (void)publishGroupAnnouncement:(NSString *JMSG_NONNULL)announcement
  31. sendMessage:(BOOL)sendMessage
  32. 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;