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

525 lines
19 KiB
Objective-C
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

//
// V2NIMMessageServiceProtocol.h
// NIMLib
//
// Created by Netease.
// Copyright (c) 2023 Netease. All rights reserved.
//
#import <Foundation/Foundation.h>
#import "V2NIMBase.h"
#import "V2NIMMessageEnum.h"
#import "V2NIMConversationEnum.h"
@class V2NIMMessage;
@class V2NIMMessagePushConfig;
@class V2NIMMessageAntispamConfig;
@class V2NIMMessageConfig;
@class V2NIMMessageRouteConfig;
@class V2NIMSendMessageParams;
@class V2NIMSendMessageResult;
@class V2NIMMessageRobotConfig;
@class V2NIMMessageListOption;
@class V2NIMClearHistoryMessageOption;
@class V2NIMMessageRevokeParams;
@class V2NIMTeamMessageReadReceipt;
@class V2NIMMessageRevokeNotification;
@class V2NIMMessagePinNotification;
@class V2NIMStorageScene;
@class V2NIMMessageQuickCommentPushConfig;
@class V2NIMMessagePin;
@class V2NIMMessageQuickComment;
@class V2NIMP2PMessageReadReceipt;
@class V2NIMCollection;
@class V2NIMAddCollectionParams;
@class V2NIMCollectionOption;
@class V2NIMMessageQuickCommentNotification;
@class V2NIMTeamMessageReadReceiptDetail;
@class V2NIMMessageRefer;
@class V2NIMMessageSearchParams;
@class V2NIMMessageDeletedNotification;
@class V2NIMClearHistoryNotification;
@class V2NIMVoiceToTextParams;
@protocol V2NIMMessageListener;
NS_ASSUME_NONNULL_BEGIN
/// 发送消息成功回调
typedef void (^V2NIMSendMessageSuccess)(V2NIMSendMessageResult *result);
/// 获取群消息已读回执状态成功回调
typedef void(^V2NIMTeamReadReceiptSuccess)(NSArray <V2NIMTeamMessageReadReceipt *> *readReceipts);
/// 获取群消息已读回执状态详情成功回调
typedef void(^V2NIMTeamReadReceiptDetailSuccess)(V2NIMTeamMessageReadReceiptDetail *detail);
/// 查询点对点消息已读回执成功回调
typedef void(^V2NIMP2PReadReceiptSuccess)(V2NIMP2PMessageReadReceipt *receipt);
/// 查询历史消息成功回调
typedef void(^V2NIMGetMessageListSuccess)(NSArray <V2NIMMessage *> *result);
/// 获取快捷评论成功回调
typedef void(^V2NIMGetQuickCommentListSuccess)(NSDictionary<NSString *, NSArray<V2NIMMessageQuickComment *> * > *result);
/// 插入一条本地消息成功回调
typedef void(^V2NIMInertMessagSuccess)(V2NIMMessage *result);
/// 更新本地扩展
typedef void(^V2NIMUpdateLocalExtensionSuccess)(V2NIMMessage *result);
/// 语音转文字成功回调
typedef void(^V2NIMTranslateSuccess)(NSString *result);
/// 添加一个收藏成功回调
typedef void(^V2NIMCollectionSuccess)(V2NIMCollection *result);
/// 移除相关收藏成功回调
typedef void(^V2NIMRemoveCollectionSuccess)(int count);
/// 获取收藏信息成功回调
typedef void(^V2NIMGetCollectionListSuccess)(NSArray <V2NIMCollection *> *result);
/// 获取 pin 消息列表成功回调
typedef void(^V2NIMGetPinListSuccess)(NSArray <V2NIMMessagePin *> *result);
/// 消息服务协议
@protocol V2NIMMessageService <NSObject>
/**
* 发送消息到会话
*
* @param message 需要发送的消息体
* @param conversationId 会话Id
* @param params 发送消息相关配置参数
* @param success 成功回调
* @param failure 失败回调
* @param progress 进度回调
*/
- (void)sendMessage:(V2NIMMessage *)message
conversationId:(NSString *)conversationId
params:(nullable V2NIMSendMessageParams *)params
success:(nullable V2NIMSendMessageSuccess)success
failure:(nullable V2NIMFailureCallback)failure
progress:(nullable V2NIMProgressCallback)progress;
/**
* 发送消息到会话
*
* @param message 需要发送的消息体
* @param replyMessage 被回复的消息
* @param params 发送消息相关配置参数
* @param success 成功回调
* @param failure 失败回调
* @param progress 进度回调
*/
- (void)replyMessage:(V2NIMMessage *)message
replyMessage:(V2NIMMessage *)replyMessage
params:(V2NIMSendMessageParams *)params
success:(nullable V2NIMSendMessageSuccess)success
failure:(nullable V2NIMFailureCallback)failure
progress:(nullable V2NIMProgressCallback)progress;
/**
* 撤回消息
* 只能撤回已经发送成功的消息
*
* @param message 要撤回的消息
* @param revokeParams 撤回消息相关参数
* @param success 成功回调
* @param failure 失败回调
*/
- (void)revokeMessage:(V2NIMMessage *)message
revokeParams:(V2NIMMessageRevokeParams *)revokeParams
success:(nullable V2NIMSuccessCallback)success
failure:(nullable V2NIMFailureCallback)failure;
/**
* 查询历史消息
* 分页接口每次默认50条可以根据参数组合查询各种类型
*
* @param option 查询消息配置选项
* @param success 成功回调
* @param failure 失败回调
*/
- (void)getMessageList:(V2NIMMessageListOption *)option
success:(nullable V2NIMGetMessageListSuccess)success
failure:(nullable V2NIMFailureCallback)failure;
/**
* 根据ID列表查询消息
* 只查询本地数据库
*
* @param messageClientIds 需要查询的消息客户端ID列表
* @param success 查询成功回调
* @param failure 查询失败回调
*/
- (void)getMessageListByIds:(NSArray<NSString *> *)messageClientIds
success:(nullable V2NIMGetMessageListSuccess)success
failure:(nullable V2NIMFailureCallback)failure;
/**
* 根据MessageRefer列表查询消息
*
* @param messageRefers 需要查询的消息Refer列表
* @param success 查询成功回调
* @param failure 查询失败回调
*/
- (void)getMessageListByRefers:(NSArray<V2NIMMessageRefer *> *)messageRefers
success:(nullable V2NIMGetMessageListSuccess)success
failure:(nullable V2NIMFailureCallback)failure;
/**
* 删除消息
* 如果消息未发送成功,则只删除本地消息
*
* @param message 需要删除的消息
* @param success 成功回调
* @param onlyDeleteLocal 是否只删除本地消息
* true只删除本地本地会将该消息标记为删除,getMessage会过滤该消息界面不展示卸载重装会再次显示
* fasle同时删除云端
* @param failure 失败回调
*/
- (void)deleteMessage:(V2NIMMessage *)message
serverExtension:(NSString *)serverExtension
onlyDeleteLocal:(BOOL)onlyDeleteLocal
success:(nullable V2NIMSuccessCallback)success
failure:(nullable V2NIMFailureCallback)failure;
/**
* 批量删除消息
* 如果单条消息未发送成功, 则只删除本地消息
* 每次50条, 不能跨会话删除,所有消息都属于同一个会话
* 删除本地消息不会多端同步,删除云端会多端同步
*
* @param messages 需要删除的消息列表
* @param onlyDeleteLocal 是否只删除本地消息
* true只删除本地本地会将该消息标记为删除 getHistoryMessage会过滤该消息界面不展示卸载重装会再次显示
* fasle同时删除云端
* @param success 成功回调
* @param failure 失败回调
*/
- (void)deleteMessages:(NSArray<V2NIMMessage *> *)messages
serverExtension:(NSString *)serverExtension
onlyDeleteLocal:(BOOL)onlyDeleteLocal
success:(nullable V2NIMSuccessCallback)success
failure:(nullable V2NIMFailureCallback)failure;
/**
* 清空历史消息
* 同步删除本地消息,云端消息
* 会话不会被删除
*
* @param option 清空消息配置选项
* @param success 成功回调
* @param failure 失败回调
*/
- (void)clearHistoryMessage:(V2NIMClearHistoryMessageOption *)option
success:(nullable V2NIMSuccessCallback)success
failure:(nullable V2NIMFailureCallback)failure;
/**
* 更新消息本地扩展字段
*
* @param message 需要被更新的消息体
* @param localExtension 扩展字段
* @param success 成功回调
* @param failure 失败回调
*/
- (void)updateMessageLocalExtension:(V2NIMMessage *)message
localExtension:(NSString *)localExtension
success:(nullable V2NIMUpdateLocalExtensionSuccess)success
failure:(nullable V2NIMFailureCallback)failure;
/**
* 插入一条本地消息, 该消息不会发送
* 该消息不会多端同步,只是本端显示
* 插入成功后, SDK会抛出回调
*
* @param message 需要插入的消息体
* @param conversationId 会话 ID
* @param senderId 消息发送者账号
* @param createTime 指定插入消息时间
* @param success 成功回调
* @param failure 失败回调
*/
- (void)insertMessageToLocal:(V2NIMMessage *)message
conversationId:(NSString *)conversationId
senderId:(NSString*)senderId
createTime:(NSTimeInterval)createTime
success:(nullable V2NIMInertMessagSuccess)success
failure:(nullable V2NIMFailureCallback)failure;
/**
* Pin一条消息
*
* @param message 需要被pin的消息体
* @param serverExtension 扩展字段
* @param success 成功回调
* @param failure 失败回调
*/
- (void)pinMessage:(V2NIMMessage *)message
serverExtension:(NSString *)serverExtension
success:(nullable V2NIMSuccessCallback)success
failure:(nullable V2NIMFailureCallback)failure;
/**
* 取消一条Pin消息
*
* @param messageRefer 需要被unpin的消息体
* @param serverExtension 扩展字段
* @param success 成功回调
* @param failure 失败回调
*/
- (void)unpinMessage:(V2NIMMessageRefer *)messageRefer
serverExtension:(NSString *)serverExtension
success:(nullable V2NIMSuccessCallback)success
failure:(nullable V2NIMFailureCallback)failure;
/**
* 更新一条Pin消息
*
* @param message 需要被更新pin的消息体
* @param serverExtension 扩展字段
* @param success 成功回调
* @param failure 失败回调
*/
- (void)updatePinMessage:(V2NIMMessage *)message
serverExtension:(NSString *)serverExtension
success:(nullable V2NIMSuccessCallback)success
failure:(nullable V2NIMFailureCallback)failure;
/**
* 获取 pin 消息列表
* @param conversationId 会话 ID
* @param success 发送消息成功回调
* @param failure 发送消息失败回调
*/
- (void)getPinnedMessageList:(NSString *)conversationId
success:(nullable V2NIMGetPinListSuccess)success
failure:(nullable V2NIMFailureCallback)failure;
/**
* 添加快捷评论
* @param message 被快捷评论的消息
* @param index 快捷评论映射标识符可以自定义映射关系,例如 表情回复: 可以本地构造映射关系, 1笑脸 2大笑 当前读取到对应的index后界面展示可以替换对应的表情 还可以应用于其他场景, 文本快捷回复等
* @param serverExtension 扩展字段, 最大8个字符
* @param pushConfig 快捷评论推送配置
* @param success 成功回调
* @param failure 失败回调
*/
- (void)addQuickComment:(V2NIMMessage *)message
index:(NSInteger)index
serverExtension:(NSString *)serverExtension
pushConfig:(V2NIMMessageQuickCommentPushConfig *)pushConfig
success:(V2NIMSuccessCallback)success
failure:(V2NIMFailureCallback)failure;
/**
* 移除快捷评论
* @param message 被快捷评论的消息
* @param index 快捷评论索引
* @param serverExtension 扩展字段, 最大8个字符
* @param success 成功回调
* @param failure 失败回调
*/
- (void)removeQuickComment:(V2NIMMessageRefer *)messageRefer
index:(NSInteger)index
serverExtension:(NSString *)serverExtension
success:(V2NIMSuccessCallback)success
failure:(V2NIMFailureCallback)failure;
/**
* 获取快捷评论
* @param messages 被快捷评论的消息
* @param success 成功回调
* @param failure 失败回调
*/
- (void)getQuickCommentList:(NSArray <V2NIMMessage *> *)messages
success:(V2NIMGetQuickCommentListSuccess)success
failure:(V2NIMFailureCallback)failure;
/**
* 添加一个收藏
* 可以收藏消息, 也可以收藏其他自定义内容
* 后续可能会移动到另外单独服务中, 它与消息不绑定
* @param params 添加收藏相关参数
* @param success 成功回调
* @param failure 失败回调
*/
- (void)addCollection:(V2NIMAddCollectionParams *)params
success:(V2NIMCollectionSuccess)success
failure:(V2NIMFailureCallback)failure;
/**
* 移除相关收藏
* @param collections 需要移除的相关收藏
* @param success 成功回调
* @param failure 失败回调
*/
- (void)removeCollections:(NSArray <V2NIMCollection *> *)collections
success:(V2NIMRemoveCollectionSuccess)success
failure:(V2NIMFailureCallback)failure;
/**
* 更新收藏扩展字段
* @param collection 需要更新的收藏信息
* @param serverExtension 为空, 表示移除扩展字段, 否则更新为新扩展字段
* @param success 成功回调
* @param failure 失败回调
*/
- (void)updateCollectionExtension:(V2NIMCollection *)collection
serverExtension:(NSString *)serverExtension
success:(V2NIMCollectionSuccess)success
failure:(V2NIMFailureCallback)failure;
/**
* 按条件分页获取收藏信息
*
* @param option 查询参数
* @param success 成功回调
* @param failure 失败回调
*/
- (void)getCollectionListByOption:(V2NIMCollectionOption *)option
success:(V2NIMGetCollectionListSuccess)success
failure:(V2NIMFailureCallback)failure;
/**
* 发送消息已读回执
*
* @param messages 需要发送已读回执的消息
* @param success 成功回调
* @param failure 失败回调
*/
- (void)sendP2PMessageReceipt:(V2NIMMessage*)messages
success:(nullable V2NIMSuccessCallback)success
failure:(nullable V2NIMFailureCallback)failure;
/**
* 查询点对点消息已读回执
*
* @param conversationId 需要发送已读回执的消息
* @param success 成功回调
* @param failure 失败回调
*/
- (void)getP2PMessageReceipt:(NSString*)conversationId
success:(nullable V2NIMP2PReadReceiptSuccess)success
failure:(nullable V2NIMFailureCallback)failure;
/**
* 查询点对点消息是否对方已读 内部判断逻辑为: 消息时间小于对方已读回执时间都为true
*
* @param message 需要发送已读回执的消息
*/
- (BOOL)isPeerRead:(V2NIMMessage *)message;
/**
* 发送群消息已读回执
* 所有消息必须属于同一个会话
*
* @param messages 需要发送已读回执的消息列表
* @param success 成功回调
* @param failure 失败回调
*/
- (void)sendTeamMessageReceipts:(NSArray<V2NIMMessage *> *)messages
success:(nullable V2NIMSuccessCallback)success
failure:(nullable V2NIMFailureCallback)failure;
/**
* 获取群消息已读回执状态
*
* @param messages 需要查询已读回执状态的消息
* @param success 获取群消息已读回执成功回调
* @param failure 获取群消息已读回执失败回调
*/
- (void)getTeamMessageReceipts:(NSArray<V2NIMMessage *> *)messages
success:(nullable V2NIMTeamReadReceiptSuccess)success
failure:(nullable V2NIMFailureCallback)failure;
/**
* 获取群消息已读回执状态详情
*
* @param message 需要查询已读回执状态的消息
* @param memberAccountIds 查找指定的账号列表已读未读
* @param success 获取群消息已读回执成功回调
* @param failure 获取群消息已读回执失败回调
*/
- (void)getTeamMessageReceiptDetail:(V2NIMMessage *)message
memberAccountIds:(NSSet*)memberAccountIds
success:(nullable V2NIMTeamReadReceiptDetailSuccess)success
failure:(nullable V2NIMFailureCallback)failure;
/**
* 语音转文字
*
* @param params 语音转文字参数
* @param success 转换成功回调
* @param failure 转换失败回调
*/
- (void)voiceToText:(V2NIMVoiceToTextParams *)params
success:(nullable V2NIMTranslateSuccess)success
failure:(nullable V2NIMFailureCallback)failure;
/**
* 取消文件类附件上传,只有文件类消息可以调用该接口
* 如果文件已经上传成功,则取消失败
* 如果取消成功, 则对应消息文件上传状态会变成
*
* @param message 需要取消附件上传的消息体
* @param success 发送消息成功回调
* @param failure 发送消息失败回调
*/
- (void)cancelMessageAttachmentUpload:(V2NIMMessage *)message
success:(nullable V2NIMSuccessCallback)success
failure:(nullable V2NIMFailureCallback)failure;
/**
* 搜索云端消息
*
* @param params 消息检索参数
* @param success 成功回调
* @param failure 失败回调
*/
- (void)searchCloudMessages:(V2NIMMessageSearchParams *)params
success:(nullable V2NIMGetMessageListSuccess)success
failure:(nullable V2NIMFailureCallback)failure;
/**
* 消息监听器
*
* @param listener 消息监听回调
*/
- (void)addMessageListener:(id<V2NIMMessageListener>)listener;
/**
* 反注册消息状态监听器
*
* @param listener 消息监听回调
*/
- (void)removeMessageListener:(id<V2NIMMessageListener>)listener;
@end
/**
* 消息监听回调
*
*/
@protocol V2NIMMessageListener <NSObject>
/**
* 收到一条新消息
*
* - Parameter message: 收到的消息内容
*/
- (void)onReceiveMessages:(NSArray <V2NIMMessage *> *)messages;
/**
* 点对点已读回执
*
* - Parameter readReceipts: 消息已读回执列表
*/
- (void)onReceiveP2PMessageReadReceipts:(NSArray <V2NIMP2PMessageReadReceipt *>*)readReceipts;
/**
* 群已读回执
* - Parameter readReceipts: 消息已读回执列表
*/
- (void)onReceiveTeamMessageReadReceipts:(NSArray <V2NIMTeamMessageReadReceipt *>*)readReceipts;
/**
* 消息撤回回调
* - Parameter revokeNotification: 描述消息撤回通知数据
*/
- (void)onMessageRevokeNotifications:(V2NIMMessageRevokeNotification *)revokeNotification;
/**
* 消息pin状态回调通知
* - Parameter pinNotification: 消息pin状态变化通知数据
*/
- (void)onMessagePinNotification:(V2NIMMessagePinNotification *)pinNotification;
/**
* 消息评论状态回调
* - Parameter notification: 快捷评论通知数据
*/
- (void)onMessageQuickCommentNotification:(V2NIMMessageQuickCommentNotification *)notification;
/**
* 消息被删除通知
* - Parameter notification: 被删除的消息列表
*/
- (void)onMessageDeletedNotifications:(NSArray<V2NIMMessageDeletedNotification *> *)messageDeletedNotification;
/**
* 消息被删除通知
* - Parameter notification: 被删除的消息列表
*/
- (void)onClearHistoryNotifications:(NSArray<V2NIMClearHistoryNotification *> *)clearHistoryNotification;
@end
NS_ASSUME_NONNULL_END