// // V2NIMFriendServiceProtocol.h // NIMSDK // // Created by 齐洪茹 on 2023/10/30. // Copyright © 2023 Netease. All rights reserved. // #import #import "V2NIMBase.h" @class V2NIMFriendAddParams; @class V2NIMFriend; @class V2NIMFriendAddApplication; @class V2NIMFriendAddRejection; @class V2NIMFriendDeleteParams; @class V2NIMFriendSetParams; @class V2NIMFriendAddApplicationQueryOption; @class V2NIMFriendAddApplicationResult; @protocol V2NIMFriendListener; NS_ASSUME_NONNULL_BEGIN /** * 用户性别 */ typedef NS_ENUM(NSInteger, V2NIMFriendAddMode) { /** * 直接添加对方为好友 */ V2NIM_FRIEND_MODE_TYPE_ADD = 1, /** * 请求添加对方为好友,对方需要验证 */ V2NIM_FRIEND_MODE_TYPE_APPLAY, }; /** * 好友添加操作的类型 */ typedef NS_ENUM(NSInteger, V2NIMFriendAddApplicationType) { /** * 自己收到了好友的添加申请 */ V2NIM_FRIEND_ADD_APPLICATION_TYPE_RECEIVED = 1, /** * 自己收到了对方拒绝我申请添加好友 */ V2NIM_FRIEND_ADD_APPLICATION_TYPE_REJECTED, }; /** * 好友删除的类型 */ typedef NS_ENUM(NSInteger, V2NIMFriendDeletionType) { /** * 自己删除好友 */ V2NIM_FRIEND_DELETION_TYPE_BY_SELF = 1, /** * 对方删除你 */ V2NIM_FRIEND_DELETION_TYPE_BY_FRIEDN, }; /** * 好友添加的状态 */ typedef NS_ENUM(NSInteger, V2NIMFriendAddApplicationStatus) { /** * 未处理 */ V2NIM_FRIEND_ADD_APPLICATION_STATUS_INIT = 0, /** * 已同意 */ V2NIM_FRIEND_ADD_APPLICATION_STATUS_AGREED, /** * 已拒绝 */ V2NIM_FRIEND_ADD_APPLICATION_STATUS_REJECED, /** * 已过期 */ V2NIM_FRIEND_ADD_APPLICATION_STATUS_EXPIRED }; typedef void (^V2NIMCheckFriendSuccess)(NSDictionary *result); typedef void (^V2NIMGetFirendListSuccess)(NSArray *result); typedef void (^V2NIMGetApplicationListSuccess)(V2NIMFriendAddApplicationResult *result); @protocol V2NIMFriendService /** * 添加好友 * * @param accountId 被添加为好友的账号ID * @param params 添加好友参数 * @param success 请求成功回调 * @param failure 请求失败回调 */ - (void)addFriend:(NSString *)accountId params:(V2NIMFriendAddParams *)params success:(nullable V2NIMSuccessCallback)success failure:(nullable V2NIMFailureCallback)failure; /** * 删除好友 * * @param accountId 被添加为好友的账号ID * @param params 删除好友参数 * @param success 请求成功回调 * @param failure 请求失败回调 */ - (void)deleteFriend:(NSString *)accountId params:(V2NIMFriendDeleteParams *)params success:(nullable V2NIMSuccessCallback)success failure:(nullable V2NIMFailureCallback)failure; /** * 接受好友申请 * * @param application 申请添加好友的相关信息 * @param success 请求成功回调 * @param failure 请求失败回调 */ - (void)acceptAddApplication:(V2NIMFriendAddApplication *)application success:(nullable V2NIMSuccessCallback)success failure:(nullable V2NIMFailureCallback)failure; /** * 拒绝添加好友申请 * * @param application 申请添加好友的相关信息 * @param postscript 拒绝申请的附言 * @param success 请求成功回调 * @param failure 请求失败回调 */ - (void)rejectAddApplication:(V2NIMFriendAddApplication *)application postscript:(NSString *)postscript success:(nullable V2NIMSuccessCallback)success failure:(nullable V2NIMFailureCallback)failure; /** * 设置好友信息 * * @param accountId 好友的账号ID * @param params 设置好友信息参数 * @param success 请求成功回调 * @param failure 请求失败回调 */ - (void)setFriendInfo:(NSString *)accountId params:(V2NIMFriendSetParams *)params success:(nullable V2NIMSuccessCallback)success failure:(nullable V2NIMFailureCallback)failure; /** * 获取好友列表 * * @param success 请求成功回调 * @param failure 请求失败回调 */ - (void)getFriendList:(nullable V2NIMGetFirendListSuccess)success failure:(nullable V2NIMFailureCallback)failure; /** * 根据账号ID获取好友信息 * * @param accountIds 获取好友信息的账号ID列表 * @param success 请求成功回调 * @param failure 请求失败回调 */ - (void)getFriendByIds:(NSArray *)accountIds success:(nullable V2NIMGetFirendListSuccess)success failure:(nullable V2NIMFailureCallback)failure; /** * 根据账号ID检查好友状态 * * @param accountIds 检查好友状态的账号ID列表 * @param success 请求成功回调 * @param failure 请求失败回调 */ - (void)checkFriend:(NSArray *)accountIds success:(nullable V2NIMCheckFriendSuccess)success failure:(nullable V2NIMFailureCallback)failure; /** * 根据账号ID检查好友状态 * * @param option 检查好友状态的账号ID列表 * @param success 请求成功回调 * @param failure 请求失败回调 */ - (void)getAddApplicationList:(V2NIMFriendAddApplicationQueryOption *)option success:(nullable V2NIMGetApplicationListSuccess)success failure:(nullable V2NIMFailureCallback)failure; /** * 添加好友监听器 * * @param listener 监听器 */ - (void)addFriendListener:(id)listener; /** * 移除好友信息监听器 * * @param listener 监听器 */ - (void)removeFriendListener:(id)listener; @end @protocol V2NIMFriendListener /** * 已添加好友 * - Parameter friendInfo:好友信息 */ - (void)onFriendAdded:(V2NIMFriend *)friendInfo; /** * 删除好友通知 * 本端删除好友,多端同步 - Parameter accountId:删除的好友账号ID */ - (void)onFriendDeleted:(NSString *)accountId deletionType:(V2NIMFriendDeletionType)deletionType; /** * 好友添加申请回调 - Parameter applicationInfo:申请添加好友信息 */ - (void)onFriendAddApplication:(V2NIMFriendAddApplication *)application; /** * 好友添加申请被拒绝回调 * 本端删除好友,多端同步 - Parameter rejectionInfo:添加好友被拒绝回调 */ - (void)onFriendAddRejected:(V2NIMFriendAddRejection *)rejectionInfo; /** * 更新好友信息 - Parameter friendInfo:信息变更的好友 */ - (void)onFriendInfoChanged:(V2NIMFriend *)friendInfo; @end @interface V2NIMFriend : NSObject /** * 好友账号ID */ @property (nullable,nonatomic,strong) NSString *accountId; /** * 好友备注 */ @property (nullable,nonatomic,strong) NSString *alias; /** * 用户扩展字段,建议使用json格式 */ @property (nullable,nonatomic,strong) NSString *serverExtension; /** * 用户扩展字段,建议使用json格式 */ @property (nullable,nonatomic,strong) NSString *customerExtension; /** * 好友信息创建时间 */ @property (nonatomic,assign) NSTimeInterval createTime; /** * 好友信息更新时间 */ @property (nonatomic,assign) NSTimeInterval updateTime; /// 好友来源 @property (nonatomic,assign) UInt8 source; @end @interface V2NIMFriendAddParams : NSObject /** * 添加好友模式 * */ @property (nonatomic, assign) V2NIMFriendAddMode addMode; /** * 添加/申请添加好友的附言 * */ @property (nullable,nonatomic,strong) NSString *postscript; @end @interface V2NIMFriendAddApplication : NSObject /** * 操作者账号 * */ @property (nullable,nonatomic,strong,readonly) NSString *operatorAccountId; /** * 申请添加好友的附言 * */ @property (nullable,nonatomic,strong,readonly) NSString *postscript; /** * 操作的状态 * */ @property (nonatomic, assign, readonly) V2NIMFriendAddApplicationStatus status; /** * 操作的时间 * */ @property (nonatomic,assign) NSTimeInterval timestamp; @end @interface V2NIMFriendDeleteParams : NSObject /** * 是否同步删除前置设置的备注 * */ @property (nonatomic, assign) BOOL deleteAlias; @end /** * 申请添加好友拒绝信息 */ @interface V2NIMFriendAddRejection : NSObject /** * 操作者账号 * */ @property (nullable,nonatomic,strong) NSString *operatorAccountId; /** * 操作时的附言 * */ @property (nullable,nonatomic,strong) NSString *postscript; /** * 操作的时间 * */ @property (nonatomic,assign) NSTimeInterval timestamp; @end /** * 设置好友信息参数 */ @interface V2NIMFriendSetParams : NSObject /** * 设置的别名 * 不传表示不设置 * 为空表示清空别名 */ @property (nullable,nonatomic,strong) NSString *alias; /** * 设置的扩展字段 * 不传表示不设置 * 为空表示清空扩展字段 */ @property (nullable,nonatomic,strong) NSString *serverExtension; @end /** * 申请添加好友相关信息查询参数 */ @interface V2NIMFriendAddApplicationQueryOption : NSObject /** * 首次传0, 下一次传上一次返回的offset,不包含offset */ @property (nonatomic,nonatomic,assign) NSUInteger offset; /** * 每次查询的数量 */ @property (nonatomic,nonatomic,assign) NSUInteger limit; /** * V2NIMFriendAddApplicationStatus 枚举值, 或者size为0, 表示查询所有状态否则按输入状态查询 * */ @property (nonatomic, strong) NSArray *status; @end /** * 查询申请添加好友相关信息列表返回结构 * */ @interface V2NIMFriendAddApplicationResult : NSObject /** * 查询返回的列表 * */ @property (nullable,nonatomic,strong,readonly) NSArray *infos; /** * 下一次的偏移量 * */ @property (nonatomic, assign,readonly) NSUInteger offset; @property (nonatomic, assign,readonly) BOOL finished; @end NS_ASSUME_NONNULL_END