123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404 |
- //
- // 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;
- /**
- * 聊天室网络请求回调
- *
- * @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(^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);
- /**
- * 聊天室连接状态
- */
- 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;
- @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 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)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 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
|