• 群组管理
    • 概述
      • 创建群组
        • 创建私有群组
        • 创建公开群组
      • 解散群组
      • 群组信息
        • 获取群信息
        • 更新群信息
        • 群头像
          • 获取群头像
          • 更新群头像
          • 获取头像本地路径
        • 修改群类型
      • 群成员信息
      • 群成员管理
        • 获取群成员列表
        • 添加群成员
        • 删除群成员
        • 移交群主
        • 设置群成员昵称
      • 群组管理员
        • 获取管理员列表
        • 添加管理员
        • 删除管理员
      • 群消息屏蔽
        • 设置群消息屏蔽
        • 判断群组是否被屏蔽
        • 获取当前用户的群屏蔽列表
      • 群组@功能
        • 创建@群成员的消息
        • 创建@全体群成员的消息
        • 判断消息是否@了自己
        • 判断消息是否是@全体成员
        • 获取消息中@的群成员列表
        • 发送@人消息
        • 发送@所有人消息
      • 入群申请和审批
        • 申请入群
          • 申请入群事件
        • 管理员审批入群申请
          • 管理员审批事件通知
      • 群成员禁言
        • 群成员禁言设置
        • 取消群成员禁言
        • 获取禁言列表
        • 判断用户是否被禁言
      • 群公告
        • 发布群公告
        • 获取群公告
        • 删除群公告
        • 置顶群公告
      • 群组黑名单
        • 黑名单列表
        • 添加黑名单
        • 移除黑名单
      • 群组免打扰
        • 是否设置免打扰
        • 设置免打扰
        • 获取免打扰列表

    群组管理

    概述

    把多个 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;