2025-10-09 16:48:46 +08:00

493 lines
13 KiB
Objective-C

//
// NIMChatroomManagerProtocol.h
// NIMLib
//
// Created by Netease.
// Copyright © 2015 Netease. All rights reserved.
//
#import <Foundation/Foundation.h>
NS_ASSUME_NONNULL_BEGIN
@class NIMMessage;
@class NIMChatroom;
@class NIMChatroomEnterRequest;
@class NIMChatroomUpdateRequest;
@class NIMChatroomMemberInfoUpdateRequest;
@class NIMChatroomMember;
@class NIMChatroomMemberRequest;
@class NIMChatroomMemberUpdateRequest;
@class NIMChatroomMemberKickRequest;
@class NIMChatroomMembersByIdsRequest;
@class NIMChatroomQueueUpdateRequest;
@class NIMChatroomQueueRemoveRequest;
@class NIMChatroomQueueBatchUpdateRequest;
@class NIMHistoryMessageSearchOption;
@class NIMChatroomBeKickedResult;
@class NIMChatroomTempMuteTagRequest;
@class NIMChatroomFetchMembersByTagRequest;
@class NIMChatroomQueryMembersCountByTagRequest;
@class NIMChatroomLocation;
@class NIMChatroomTagsUpdate;
@class NIMGetMessagesByTagsParam;
@class NIMChatroomTagsUpdateEvent;
/**
* 聊天室网络请求回调
*
* @param error 错误信息
*/
typedef void(^NIMChatroomHandler)(NSError * __nullable error);
/**
* 聊天室成员请求回调
*
* @param error 错误信息
* @param member 更新后的聊天室成员信息
*/
typedef void(^NIMChatroomMemberHandler)(NSError * __nullable error,NIMChatroomMember * __nullable member);
/**
* 进入聊天室请求回调
*
* @param error 错误信息
* @param chatroom 聊天室信息
* @param me 自己在聊天室内的信息
*/
typedef void(^NIMChatroomEnterHandler)(NSError * __nullable error,NIMChatroom * __nullable chatroom,NIMChatroomMember * __nullable me);
/**
* 聊天室信息请求回调
*
* @param error 错误信息
* @param chatroom 聊天室信息
*/
typedef void(^NIMChatroomInfoHandler)(NSError * __nullable error,NIMChatroom * __nullable chatroom);
/**
* 聊天室成员组网络数据回调
*
* @param error 错误信息
*/
typedef void(^NIMChatroomMembersHandler)(NSError * __nullable error, NSArray<NIMChatroomMember *> * __nullable members);
/**
* 聊天室成员数量数量回调
*
* @param error 错误信息
*/
typedef void(^NIMChatroomMembersCountHandler)(NSError * __nullable error, uint64_t count);
/**
* 聊天室队列数据回调
*
* @param error 错误信息
*/
typedef void(^NIMChatroomQueueInfoHandler)(NSError * __nullable error, NSArray<NSDictionary<NSString *, NSString *> *> * __nullable info);
/**
* 聊天室队列移除元素回调
*
* @param error 错误信息
*/
typedef void(^NIMChatroomQueueRemoveHandler)(NSError * __nullable error, NSDictionary<NSString *, NSString *> * __nullable element);
/**
聊天室队列批量更新元素回调
@param error 错误信息
@param elements 不存在的元素elementKey列表
*/
typedef void(^NIMChatroomQueueBatchUpdateHandler)(NSError * __nullable error, NSArray<NSString *> * __nullable elements);
/**
* 拉取服务器聊天消息记录block
*
* @param error 错误,如果成功则error为nil
* @param messages 读取的消息列表
*/
typedef void(^NIMFetchChatroomHistoryBlock)(NSError * __nullable error,NSArray<NIMMessage *> * __nullable messages);
/**
* 根据标签拉取服务器聊天消息记录的回调
*
* @param error 错误,如果成功则error为nil
* @param messages 读取的消息列表
*/
typedef void(^NIMGetMessagesByTagsHandler)(NSError * __nullable error,NSArray<NIMMessage *> * __nullable messages);
/**
* 聊天室动态token block
*/
typedef NSString*(^NIMProvideChatroomDynamicTokenHandler)(NSString * __nullable roomId, NSString * __nullable account);
/**
* 聊天室连接状态
*/
typedef NS_ENUM(NSInteger, NIMChatroomConnectionState) {
/**
* 正在进入
*/
NIMChatroomConnectionStateEntering = 0,
/**
* 进入聊天室成功
*/
NIMChatroomConnectionStateEnterOK = 1,
/**
* 进入聊天室失败
*/
NIMChatroomConnectionStateEnterFailed = 2,
/**
* 和聊天室失去连接
*/
NIMChatroomConnectionStateLoseConnection = 3,
};
/**
* 聊天室被踢原因
*/
typedef NS_ENUM(NSInteger, NIMChatroomKickReason) {
/**
* 聊天室已经解散
*/
NIMChatroomKickReasonInvalidRoom = 1,
/**
* 被聊天室管理员踢出
*/
NIMChatroomKickReasonByManager = 2,
/**
* 多端被踢
*/
NIMChatroomKickReasonByConflictLogin = 3,
/**
* 被拉黑
*/
NIMChatroomKickReasonBlacklist = 5,
};
/**
* 聊天室管理器回调
*/
@protocol NIMChatroomManagerDelegate <NSObject>
@optional
/**
* 被踢回调
*
* @param result 被踢的结果详情
*/
- (void)chatroomBeKicked:(NIMChatroomBeKickedResult *)result;
/**
* 聊天室连接状态变化
*
* @param roomId 聊天室Id
* @param state 当前状态
*/
- (void)chatroom:(NSString *)roomId connectionStateChanged:(NIMChatroomConnectionState)state;
/**
* 聊天室自动登录出错
*
* @param roomId 聊天室Id
* @param error 自动登录出错原因
*/
- (void)chatroom:(NSString *)roomId autoLoginFailed:(NSError *)error;
/**
* 我的标签修改通知
* @param event 修改通知
*/
- (void)tagsUpdate:(NIMChatroomTagsUpdateEvent *)event;
@end
/**
* 聊天室管理器
*/
@protocol NIMChatroomManager <NSObject>
/**
* 进入聊天室
*
* @param request 进入聊天室请求
* @param completion 进入完成后的回调
*/
- (void)enterChatroom:(NIMChatroomEnterRequest *)request
completion:(nullable NIMChatroomEnterHandler)completion;
/**
* 离开聊天室
*
* @param roomId 聊天室ID
* @param completion 离开聊天室的回调
*/
- (void)exitChatroom:(NSString *)roomId
completion:(nullable NIMChatroomHandler)completion;
/**
* 聊天室登录使用的模式
*
* @param roomId 聊天室ID
* @return 使用的登录模式
*/
- (NSInteger)chatroomAuthMode:(NSString *)roomId;
/**
* 查询服务器保存的聊天室消息记录
*
* @param roomId 聊天室ID
* @param option 查询选项
* @param result 完成回调
*/
- (void)fetchMessageHistory:(NSString *)roomId
option:(NIMHistoryMessageSearchOption *)option
result:(nullable NIMFetchChatroomHistoryBlock)result;
/**
* 通过标签查询消息
*
* @param param 查询参数
* @param completion 完成回调
*/
- (void)getMessagesByTags:(NIMGetMessagesByTagsParam *)param
completion:(nullable NIMGetMessagesByTagsHandler)completion;
/**
* 获取聊天室信息
*
* @param roomId 聊天室ID
* @param completion 获取聊天室信息的回调
* @discussion 只有已进入聊天室才能够获取对应的聊天室信息
*/
- (void)fetchChatroomInfo:(NSString *)roomId
completion:(nullable NIMChatroomInfoHandler)completion;
/**
* 修改聊天室信息
*
* @param request 聊天室修改请求
* @param completion 修改后完成的回调
*/
- (void)updateChatroomInfo:(NIMChatroomUpdateRequest *)request
completion:(nullable NIMChatroomHandler)completion;
/**
* 修改自己在聊天室内的个人信息
*
* @param request 个人信息更新请求
* @param completion 修改完成后的回调
*/
- (void)updateMyChatroomMemberInfo:(NIMChatroomMemberInfoUpdateRequest *)request
completion:(nullable NIMChatroomHandler)completion;
/**
* 获取聊天室成员
*
* @param request 获取成员请求
* @param completion 请求完成回调
*/
- (void)fetchChatroomMembers:(NIMChatroomMemberRequest *)request
completion:(nullable NIMChatroomMembersHandler)completion;
/**
* 根据用户ID获取聊天室成员信息
*
* @param request 获取成员请求
* @param completion 请求完成回调
*/
- (void)fetchChatroomMembersByIds:(NIMChatroomMembersByIdsRequest *)request
completion:(nullable NIMChatroomMembersHandler)completion;
/**
* 根据标签获取聊天室内该标签下的成员
*
* @param request 获取标签成员请求
* @param completion 请求完成回调
*/
- (void)fetchChatroomMembersByTag:(NIMChatroomFetchMembersByTagRequest *)request
completion:(nullable NIMChatroomMembersHandler)completion;
/**
* 根据标签查询聊天室内该标签下的在线成员数量
*
* @param request 获取标签成员数量请求
* @param completion 请求完成回调
*/
- (void)queryChatroomMembersCountByTag:(NIMChatroomQueryMembersCountByTagRequest *)request
completion:(nullable NIMChatroomMembersCountHandler)completion;
/**
* 更新坐标
* @param location 当前坐标和有效距离
* @param completion 请求完成回调
*/
-(void)updateLocation:(nonnull NIMChatroomLocation *)location
completion:(nullable NIMChatroomHandler)completion;
/**
* 更新标签
* @param tags 标签
* @param completion 请求完成回调
*/
-(void)updateTags:(nonnull NIMChatroomTagsUpdate *)tags
completion:(nullable NIMChatroomHandler)completion;
/**
* 标记为聊天室管理员
*
* @param request 更新请求
* @param completion 请求回调
*/
- (void)markMemberManager:(NIMChatroomMemberUpdateRequest *)request
completion:(nullable NIMChatroomHandler)completion;
/**
* 标记为聊天室普通成员
*
* @param request 更新请求
* @param completion 请求回调
*/
- (void)markNormalMember:(NIMChatroomMemberUpdateRequest *)request
completion:(nullable NIMChatroomHandler)completion;
/**
* 更新用户聊天室黑名单状态
*
* @param request 更新请求
* @param completion 请求回调
*/
- (void)updateMemberBlack:(NIMChatroomMemberUpdateRequest *)request
completion:(nullable NIMChatroomHandler)completion;
/**
* 更新用户聊天室静言状态
*
* @param request 更新请求
* @param completion 请求回调
*/
- (void)updateMemberMute:(NIMChatroomMemberUpdateRequest *)request
completion:(nullable NIMChatroomHandler)completion;
/**
* 更新用户聊天室临时禁言状态
*
* @param request 更新请求
* @param duration 临时禁言时长,单位为秒
* @param completion 请求回调
*/
- (void)updateMemberTempMute:(NIMChatroomMemberUpdateRequest *)request
duration:(unsigned long long)duration
completion:(nullable NIMChatroomHandler)completion;
/**
* 针对标签更新聊天室临时禁言状态
*
* @param request 更新请求
* @param duration 临时禁言时长,单位为秒
* @param completion 请求回调
*/
- (void)tempMuteTag:(NIMChatroomTempMuteTagRequest *)request completion:(NIMChatroomHandler)completion;
/**
* 将特定成员踢出聊天室
*
* @param request 踢出请求
* @param completion 请求回调
*/
- (void)kickMember:(NIMChatroomMemberKickRequest *)request
completion:(nullable NIMChatroomHandler)completion;
/**
* 加入或者更新聊天室通用队列元素,权限由 NIMChatroom 的 queueModificationLevel 决定
*
* @param request 聊天室队列请求
* @param completion 请求回调
*/
- (void)updateChatroomQueueObject:(NIMChatroomQueueUpdateRequest *)request
completion:(nullable NIMChatroomHandler)completion;
/**
* 移除聊天室队列元素,权限由 NIMChatroom 的 queueModificationLevel 决定
*
* @param request 拉取请求
* @param completion 请求回调
*/
- (void)removeChatroomQueueObject:(NIMChatroomQueueRemoveRequest *)request
completion:(nullable NIMChatroomQueueRemoveHandler)completion;
/**
* 获取聊天室队列
*
* @param roomId 聊天室ID
* @param completion 请求回调
*/
- (void)fetchChatroomQueue:(NSString *)roomId
completion:(nullable NIMChatroomQueueInfoHandler)completion;
/**
* 删除聊天室队列,权限由 NIMChatroom 的 queueModificationLevel 决定
*
* @param roomId 聊天室ID
* @param completion 请求回调
*/
- (void)dropChatroomQueue:(NSString *)roomId
completion:(nullable NIMChatroomHandler)completion;
/**
* 批量更新聊天室通用队列元素,权限由 NIMChatroom 的 queueModificationLevel 决定
*
* @param request 聊天室队列批量请求
* @param completion 请求回调
*/
- (void)batchUpdateChatroomQueueObject:(NIMChatroomQueueBatchUpdateRequest *)request
completion:(nullable NIMChatroomQueueBatchUpdateHandler)completion;
/**
* 添加通知对象
*
* @param delegate 通知对象
*/
- (void)addDelegate:(id<NIMChatroomManagerDelegate>)delegate;
/**
* 移除通知对象
*
* @param delegate 通知对象
*/
- (void)removeDelegate:(id<NIMChatroomManagerDelegate>)delegate;
@end
NS_ASSUME_NONNULL_END