超大群


超大群概述

超大群对应的管理类为 NIMSuperTeamManager 。超大群是针对大规模群聊场景的功能。目前支持不超过5000人的群聊。由于超大群场景较为特殊,并不能支持所有高级群提供的管理功能。目前超大群仅支持群主与普通成员两种身份。

获取群组

NIM SDK 在程序启动时会对本地群信息进行同步,所以只需要调用本地缓存接口获取群就可以了。 SDK 提供了批量获取自己的群接口、以及根据单个群 id 查询的接口。同样 SDK 也提供了远程获取群信息的接口。

本地获取

本地获取所有群组

原型

@protocol NIMSuperTeamManager <NSObject>
/**
 *  获取所有群组
 *
 *  @return 返回所有群组
 */
- (nullable NSArray<NIMSuperTeam *> *)allMyTeams;
@end

本地根据群 Id 获取群组

@protocol NIMSuperTeamManager <NSObject>
/**
 *  根据群组ID获取具体的群组信息
 *
 *  @param teamId 群组ID
 *
 *  @return 群组信息
 */
- (nullable NIMSuperTeam *)teamById:(NSString *)teamId;
@end

参数列表

参数 类型 说明
teamId NSString 群组 ID

加入群组

用户可以通过被动接受邀请和主动加入两种方式进入群组。

邀请用户入群

@protocol NIMSuperTeamManager <NSObject>
/**
 *  邀请用户入群
 *
 *  @param users       用户ID列表
 *  @param teamId      群组ID
 *  @param postscript  邀请附言
 *  @param attach      扩展消息
 *  @param completion  完成后的回调
 */
- (void)addUsers:(NSArray<NSString *>  *)users
          toTeam:(NSString *)teamId
      completion:(nullable NIMSuperTeamMemberHandler)completion;

@end

参数列表

参数 类型 说明
users NSArray 用户 ID 列表
teamId NSString 群组 ID
completion NIMSuperTeamMemberHandler 完成后的回调

请求完成后,被邀请者将直接入群;

编辑群组资料

成员可以修改自己的群资料,群主目前只能修改自己的信息。当修改完群组资料后,会收到一条类型为 群组资料变更 (NIMSuperTeamNotificationContent) 的群组通知消息,具体可参考 群组通知

具体包括:

修改群信息

@protocol NIMSuperTeamManager <NSObject>
 *  更新群信息
 *
 *  @param values      需要更新的群信息键值对
 *  @param teamId      群组ID
 *  @param completion  完成后的回调
 *  @discussion   这个接口可以一次性修改群的多个属性,如名称,公告等,传入的数据键值对是 {@(NIMSuperTeamUpdateTag) : NSString},无效数据将被过滤
 */
- (void)updateTeamInfos:(NSDictionary<NSNumber *,NSString *> *)values
                 teamId:(NSString *)teamId
             completion:(nullable NIMSuperTeamHandler)completion;
@end

参数列表

参数 类型 说明
teamName NSString 群组名称
teamId NSString 群组 ID
completion NIMSuperTeamHandler 完成后的回调

群组成员

群组成员信息不同于用户资料,主要是和群组关联的信息。同一个用户在不同群组中自己的群成员信息也不一样。群成员信息包括群昵称,进群时间,群成员类型等等。

原型

@interface NIMSuperTeamMember : NSObject
/**
 *  群ID
 */
@property (nullable,nonatomic,copy,readonly)         NSString *teamId;

/**
 *  群成员ID
 */
@property (nullable,nonatomic,copy,readonly)         NSString *userId;

/**
 *  邀请者ID
 *  @dicusssion 此字段仅当该成员为自己时有效。不允许查看其他群成员的邀请者
 */
@property (nullable,nonatomic,copy,readonly)         NSString *invitor;

/**
 *  群昵称
 */
@property (nullable,nonatomic,copy)         NSString *nickname;

/**
 *  进群时间
 */
@property (nonatomic,assign,readonly)       NSTimeInterval createTime;


/**
 *  新成员群自定义信息
 */
@property (nullable,nonatomic,copy)        NSString *customInfo;

@end

属性列表

参数 类型 说明
teamId NSString 群组ID
userId NSString 群成员 ID
nickname NSString 群昵称
isMuted BOOL 是否被禁言
createTime NSTimeInterval 进群时间
customInfo NSString 新成员群自定义信息

对于群成员, SDK 不保证有本地数据,每次登录会同步所在群的群成员。对于同步或主动远程获取过的群成员,SDK会把数据缓存在本地。

当本地缓存群成员资料发生变动时,会通过 NIMSuperTeamManagerDelegate 的回调通知上层,详见群组委托

修改群成员昵称

@protocol NIMSuperTeamManager <NSObject>
/**
 *  更新成员群昵称
 *
 *  @param userId       群成员ID
 *  @param teamId       群组ID
 *  @param completion   完成后的回调
 */
- (void)updateMyNick:(NSString *)userId
              inTeam:(NSString *)teamId
          completion:(NIMSuperTeamHandler)completion
@end

参数列表

参数 类型 说明
userId NSString 用户 ID
teamId NSString 群组 ID
completion NIMSuperTeamHandler 完成后的回调

获取群成员

@protocol NIMSuperTeamManager <NSObject>
/**
 *  获取群组成员
 *
 *  @param teamId     群组ID
 *  @param completion 完成后的回调
 */
- (void)fetchTeamMembers:(NSString *)teamId
              completion:(NIMSuperTeamMemberHandler)completion
@end

参数列表

参数 类型 说明
teamId NSString 群组 ID
completion NIMSuperTeamMemberHandler 完成后的回调

绝大多数情况这个请求都是从本地读取缓存并同步返回,但是由于群成员信息量较大, SDK 采取的是登录后延迟拉取的策略。考虑到用户网络等问题, SDK 有可能没有及时缓存群成员信息,那么这个请求将是个带网络请求的异步操作(增量请求)。同时这个接口会去请求本地没有缓存的群用户的资料信息,但不会触发 - (void)onUserInfoChanged: 回调。

获取到的群成员只有云信服务器托管的群相关数据,需要开发者结合自己管理的用户数据进行界面显示。

修改自己的群成员自定义属性

@protocol NIMSuperTeamManager <NSObject>
/**
 *  更新成员群自定义属性
 *
 *  @param newInfo      新的自定义属性
 *  @param teamId       群组ID
 *  @param completion   完成后的回调
 */
- (void)updateMyCustomInfo:(NSString *)newInfo
                    inTeam:(NSString *)teamId
                completion:(NIMSuperTeamHandler)completion
@end

参数列表

参数 类型 说明
newInfo NSString 新的自定义属性
teamId NSString 群组 ID
completion NIMSuperTeamHandler 完成后的回调

修改后,其他在线用户自动同步获得修改后的属性。

用户退群

@protocol NIMSuperTeamManager <NSObject>
/**
 *  退出群组
 *
 *  @param teamId     群组ID
 *  @param completion 完成后的回调
 */
- (void)quitTeam:(NSString *)teamId
      completion:(NIMSuperTeamHandler)completion
@end

参数列表

参数 类型 说明
teamId NSString 群组 ID
completion NIMSuperTeamHandler 完成后的回调

用户退群成功后,相关会话信息仍然会保留,但不再能接收关于此群的消息。

踢出用户

@protocol NIMSuperTeamManager <NSObject>
/**
 *  从群组内移除成员
 *
 *  @param users       需要移除的用户ID列表
 *  @param teamId      群组ID
 *  @param completion  完成后的回调
 */
- (void)kickUsers:(NSArray<NSString *> *)users
         fromTeam:(NSString *)teamId
       completion:(NIMSuperTeamHandler)completion
@end

被踢出的用户相关会话信息仍然会保留,但不再能接收关于此群的消息。

参数列表

参数 类型 说明
users NSArray 需要移除的用户ID列表
teamId NSString 群组 ID
completion NIMSuperTeamHandler 完成后的回调

群组委托

用户的群信息会在以下条件下更新:

这些操作成功后,云信服务器会推送一条群通知,同时触发 SDK 更新群信息的委托事件:

@protocol NIMSuperTeamManagerDelegate <NSObject>
/**
 *  群组更新回调
 *
 *  @param team 更新的群组
 */
- (void)onSuperTeamUpdated:(NIMSuperTeam *)team
@end

用户的群信息会在以下条件下移除:

这些操作成功后,云信服务器同样会推送一条群通知,同时触发 SDK 更新群信息的委托事件:

@protocol NIMSuperTeamManagerDelegate <NSObject>
/**
 *  群组移除回调
 *
 *  @param team 被移除的群组
 */
- (void)onSuperTeamRemoved:(NIMSuperTeam *)team
@end

用户的群成员信息会在以下条件下更新

这些操作成功后,云信服务器同样会推送一条群通知,同时触发 SDK 更新群信息的委托事件:

@protocol NIMSuperTeamManagerDelegate <NSObject>
/**
 *  群组成员变动回调,包括数量增减以及成员属性变动
 *
 *  @param team 变动的群组
 */
- (void)onSuperTeamMemberChanged:(NIMSuperTeam *)team;
@end

群组通知

群组通知是一种消息类型 ( NIMMessageTypeNotification ) ,用户在创建群或者进入群成功之后,任何关于群的变动,云信服务器都会下发一条群通知消息。群通知消息和其他消息一样,可从 NIMConversationManager 提供的消息查询接口中获取。

群组通知内容 NIMSuperTeamNotificationContent 的字段说明: