聊天室成员管理
更新时间: 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
此文档是否对你有帮助?