iOS

聊天室成员管理

更新时间: 2024/03/14 17:08:39

聊天室成员管理

聊天室成员概述

关于聊天室成员:

  • 聊天室成员包括固定成员和非固定成员(临时成员/游客)。固定成员上限是1000个。
  • 固定成员包括四种类型:创建者、管理员、普通用户、受限用户。受限用户又包括:黑名单用户和永久禁言用户。
  • 除了创建者,其他成员刚加入时,默认都是游客。
  • 如果游客被设置为管理员,再被取消管理员,则变为普通用户(而不是游客)。
  • 要将管理员变成普通用户,直接取消其管理员权限即可。不能直接将管理员设置为普通成员。
  • 只有创建者可以对管理员进行操作,管理员不能对创建者和其他管理员进行操作。
  • 普通用户被取消身份后变为游客。
  • 游客被设置为黑名单用户后变为固定成员(同时会被服务器断开连接并且无法进入聊天室,除非被解除黑名单)。解除黑名单后变为游客。
  • 永久禁言后,身份变为固定成员。解除永久禁言后,身份变为游客。解除永久禁言后,不影响临时禁言的到期时间。
  • 临时禁言的设置和解除不会改变成员的身份。如果重复设置临时禁言,则后一次设置会覆盖前一次设置的到期时间(不会累积)。
  • 游客只有在线时才属于聊天室的非固定成员;游客进入聊天室又退出后,不属于聊天室的任何成员(和聊天室没有任何关系)。

聊天室成员原型:

objc/**
 *  聊天室用户
 */
@interface NIMChatroomMember : NSObject

/**
 *  用户ID
 */
@property (nullable,nonatomic,copy)   NSString *userId;

/**
 *  聊天室内的昵称字段,由用户进聊天室时提交。
 */
@property (nullable,nonatomic,copy)   NSString *roomNickname;

/**
 *  聊天室内的头像字段,由用户进聊天室时提交。
 */
@property (nullable,nonatomic,copy)   NSString *roomAvatar;

/**
 *  用户在聊天室内的头像缩略图
 *  @discussion 仅适用于使用云信上传服务进行上传的资源,否则无效。
 */

@property (nullable,nonatomic,copy,readonly)  NSString    *roomAvatarThumbnail;

/**
 *  聊天室内预留给开发者的扩展字段,由用户进聊天室时提交。
 */
@property (nullable,nonatomic,copy)   NSString *roomExt;

/**
 *  用户类型
 */
@property (nonatomic,assign) NIMChatroomMemberType type;

/**
 *  是否被禁言
 */
@property (nonatomic,assign) BOOL isMuted;

/**
 *  是否被临时禁言
 *  @discussion 临时禁言和禁言属性无相关性
 */
@property (nonatomic,assign) BOOL isTempMuted;

/**
 *  临时禁言剩余时长
 */
@property (nonatomic,assign) unsigned long long tempMuteDuration;

/**
 *  是否被拉黑
 */
@property (nonatomic,assign) BOOL isInBlackList;

/**
 *  是否在线, 仅特殊成员才可能离线, 对游客用户而言只能是在线
 */
@property (nonatomic,assign) BOOL isOnline;

/**
 *  进入聊天室的时间点
 */
@property (nonatomic,assign) NSTimeInterval enterTimeInterval;

/**
 *  聊天室成员的tags
 */
@property (nullable,nonatomic,copy)   NSString *tags;

/**
 *  聊天室成员的notifyTargetTags
 */
@property (nullable,nonatomic,copy)   NSString *notifyTargetTags;

@end

获取聊天室成员

此接口可以远程获取聊天室成员列表,NIM SDK 不会缓存聊天室成员列表,开发者需要根据业务自己做好缓存。

分页获取聊天室成员

objc@protocol NIMChatroomManager <NSObject>
/**
 *  获取聊天室成员
 *
 *  @param request    获取成员请求
 *  @param completion 请求完成回调
 */
- (void)fetchChatroomMembers:(NIMChatroomMemberRequest *)request
                  completion:(NIMChatroomMembersHandler)completion;
@end                  

NIMChatroomMemberRequest 参数列表

参数
类型
说明
roomId NSString 聊天室 ID
type NIMChatroomFetchMemberType 聊天室成员类型.
lastMember NIMChatroomMember 最后一位成员锚点,不包括此成员。填nil会使用当前服务器最新时间开始查询,即第一页。
limit NSUInteger 获取聊天室成员个数

NIMChatroomFetchMemberType 类型

参数
说明
NIMChatroomFetchMemberTypeRegular 聊天室固定成员
NIMChatroomFetchMemberTypeTemp 聊天室临时成员
NIMChatroomFetchMemberTypeRegularOnline 聊天室在线的固定成员
NIMChatroomFetchMemberTypeUnRegularReversedOrder 聊天室非固定成员(反向查询)

获取指定聊天室成员

objc@protocol NIMChatroomManager <NSObject>
/**
 *  根据用户ID获取聊天室成员信息
 *
 *  @param request    获取成员请求
 *  @param completion 请求完成回调
 */
- (void)fetchChatroomMembersByIds:(NIMChatroomMembersByIdsRequest *)request
                    completion:(NIMChatroomMembersHandler)completion;
@end                    

NIMChatroomMembersByIdsRequest 参数列表

参数
类型
说明
roomId NSString 聊天室 ID
userIds NSArray<NSString *> 用户ID列表,最多20个

修改自身信息

objc@protocol NIMChatroomManager <NSObject>
/**
* 修改自身聊天室内信息
*/
- (void)updateMyChatroomMemberInfo:(NIMChatroomMemberInfoUpdateRequest *)request
                        completion:(nullable NIMChatroomHandler)completion;
@end

NIMChatroomMemberInfoUpdateRequest参数

objc/**
 *  聊天室成员信息修改请求
 */
@interface NIMChatroomMemberInfoUpdateRequest : NSObject

/**
 *  聊天室ID
 */
@property (nonatomic,copy) NSString *roomId;

/**
 *  需要更新的信息,修改传入的数据键值对是 {@(NIMChatroomMemberInfoUpdateTag) : NSString},无效数据将被过滤
 */
@property (nonatomic,copy) NSDictionary *updateInfo;

/**
 *  是否需要通知
 */
@property (nonatomic,assign) BOOL needNotify;

/**
 *  操作通知事件扩展
 */
@property (nullable,nonatomic,copy) NSString *notifyExt;

/**
 *  更新的信息是否需要在服务器做持久化,只对固定成员生效,默认为 NO
 */
@property (nonatomic,assign) BOOL needSave;

/**
 * 对某些资料内容另外的反垃圾的业务ID
 */
@property (nonatomic,strong)    NSString *antispamBusinessId;

@end

示例:

objcNIMChatroomMemberInfoUpdateRequest *request = [[NIMChatroomMemberInfoUpdateRequest alloc] init];
request.roomId = @"123";
NSMutableDictionary *dic = [[NSMutableDictionary alloc] init];
[dic setValue:@"zhangsan" forKey:@(NIMChatroomMemberInfoUpdateTagNick)];
request.updateInfo = dic;
[[NIMSDK sharedSDK].chatroomManager updateMyChatroomMemberInfo:request 
                                                    completion:^(NSError * _Nullable error) { }];

调用完这个接口后,开发者应该自己修改内存缓存的 聊天室成员 对象。

添加/移除管理员

objc@protocol NIMChatroomManager <NSObject>
/**
 *  添加/移除聊天室管理员
 *
 *  @param request    更新请求
 *  @param completion 请求回调
 */
- (void)markMemberManager:(NIMChatroomMemberUpdateRequest *)request
              completion:(NIMChatroomHandler)completion;
@end              

通过NIMChatroomMemberUpdateRequest - enable来设置是添加还是移除。

添加/移除普通成员

objc@protocol NIMChatroomManager <NSObject>
/**
 *  添加/移除聊天室普通成员
 *
 *  @param request    更新请求
 *  @param completion 请求回调
 */
- (void)markNormalMember:(NIMChatroomMemberUpdateRequest *)request
            completion:(NIMChatroomHandler)completion;
@end            

通过NIMChatroomMemberUpdateRequest - enable来设置是添加还是移除。

添加/移除黑名单用户

objc@protocol NIMChatroomManager <NSObject>
/**
 *  更新用户聊天室黑名单状态
 *
 *  @param request    更新请求
 *  @param completion 请求回调
 */
- (void)updateMemberBlack:(NIMChatroomMemberUpdateRequest *)request
              completion:(NIMChatroomHandler)completion;
@end              

通过NIMChatroomMemberUpdateRequest - enable来设置是添加还是移除。

添加/移除禁言用户

objc@protocol NIMChatroomManager <NSObject>
/**
 *  更新用户聊天室静言状态
 *
 *  @param request    更新请求
 *  @param completion 请求回调
 */
- (void)updateMemberMute:(NIMChatroomMemberUpdateRequest *)request
            completion:(NIMChatroomHandler)completion;
@end            

通过NIMChatroomMemberUpdateRequest - enable来设置是添加还是移除。

踢出成员

创建者或管理员可以将权限比自己低的用户踢出聊天室。

objc@protocol NIMChatroomManager <NSObject>
/**
 *  将特定成员踢出聊天室
 *
 *  @param request    踢出请求
 *  @param completion 请求回调
 */
- (void)kickMember:(NIMChatroomMemberKickRequest *)request
        completion:(NIMChatroomHandler)completion;
@end        

NIMChatroomMemberKickRequest 参数列表

参数 类型 说明
roomId NSString 聊天室 ID
userId NSString 用户 ID ,仅管理员可以踢人;如userId是管理员仅创建者可以踢
notifyExt NSString 被踢通知扩展字段

临时禁言成员

objc@protocol NIMChatroomManager <NSObject>

/**
 *  更新用户聊天室临时禁言状态
 *
 *  @param request    更新请求
 *  @param duration   临时禁言时长,单位为秒
 *  @param completion 请求回调
 */
- (void)updateMemberTempMute:(NIMChatroomMemberUpdateRequest *)request
                    duration:(unsigned long long)duration
                  completion:(nullable NIMChatroomHandler)completion;
                
@end
此文档是否对你有帮助?
有帮助
去反馈
  • 聊天室成员管理
  • 聊天室成员概述
  • 获取聊天室成员
  • 分页获取聊天室成员
  • 获取指定聊天室成员
  • 修改自身信息
  • 添加/移除管理员
  • 添加/移除普通成员
  • 添加/移除黑名单用户
  • 添加/移除禁言用户
  • 踢出成员
  • 临时禁言成员