// // V2NIMMessageServiceProtocol.h // NIMLib // // Created by Netease. // Copyright (c) 2023 Netease. All rights reserved. // #import #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 *readReceipts); /// 获取群消息已读回执状态详情成功回调 typedef void(^V2NIMTeamReadReceiptDetailSuccess)(V2NIMTeamMessageReadReceiptDetail *detail); /// 查询点对点消息已读回执成功回调 typedef void(^V2NIMP2PReadReceiptSuccess)(V2NIMP2PMessageReadReceipt *receipt); /// 查询历史消息成功回调 typedef void(^V2NIMGetMessageListSuccess)(NSArray *result); /// 获取快捷评论成功回调 typedef void(^V2NIMGetQuickCommentListSuccess)(NSDictionary * > *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 *result); /// 获取 pin 消息列表成功回调 typedef void(^V2NIMGetPinListSuccess)(NSArray *result); /// 消息服务协议 @protocol V2NIMMessageService /** * 发送消息到会话 * * @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 *)messageClientIds success:(nullable V2NIMGetMessageListSuccess)success failure:(nullable V2NIMFailureCallback)failure; /** * 根据MessageRefer列表查询消息 * * @param messageRefers 需要查询的消息Refer列表 * @param success 查询成功回调 * @param failure 查询失败回调 */ - (void)getMessageListByRefers:(NSArray *)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 *)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 *)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 *)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 *)messages success:(nullable V2NIMSuccessCallback)success failure:(nullable V2NIMFailureCallback)failure; /** * 获取群消息已读回执状态 * * @param messages 需要查询已读回执状态的消息 * @param success 获取群消息已读回执成功回调 * @param failure 获取群消息已读回执失败回调 */ - (void)getTeamMessageReceipts:(NSArray *)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)listener; /** * 反注册消息状态监听器 * * @param listener 消息监听回调 */ - (void)removeMessageListener:(id)listener; @end /** * 消息监听回调 * */ @protocol V2NIMMessageListener /** * 收到一条新消息 * * - Parameter message: 收到的消息内容 */ - (void)onReceiveMessages:(NSArray *)messages; /** * 点对点已读回执 * * - Parameter readReceipts: 消息已读回执列表 */ - (void)onReceiveP2PMessageReadReceipts:(NSArray *)readReceipts; /** * 群已读回执 * - Parameter readReceipts: 消息已读回执列表 */ - (void)onReceiveTeamMessageReadReceipts:(NSArray *)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 *)messageDeletedNotification; /** * 消息被删除通知 * - Parameter notification: 被删除的消息列表 */ - (void)onClearHistoryNotifications:(NSArray *)clearHistoryNotification; @end NS_ASSUME_NONNULL_END