NIMResourceManagerProtocol.h
4.6 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
//
// NIMResourceManager.h
// NIMLib
//
// Created by Netease.
// Copyright (c) 2015 Netease. All rights reserved.
//
#import <Foundation/Foundation.h>
@class NIMResourceQueryOption;
@class NIMCacheQueryResult;
NS_ASSUME_NONNULL_BEGIN
/**
* 缓存搜索 block
*
* @param error 错误,如果成功则 error 为 nil
* @param results 成功时的结果列表,内部为 NIMCacheQueryResult
*/
typedef void(^NIMResourceSearchHandler)(NSError * __nullable error, NSArray<NIMCacheQueryResult *> * __nullable results);
/**
* 缓存删除 block
*
* @param error 错误,如果成功则 error 为 nil
* @param freeBytes 释放的磁盘空间大小
*/
typedef void(^NIMResourceDeleteHandler)(NSError * __nullable error, long long freeBytes);
/**
* 上传Block
*
* @param urlString 上传后得到的URL,失败时为nil
* @param error 错误信息,成功时为nil
*/
typedef void(^NIMUploadCompleteBlock)(NSString * __nullable urlString,NSError * __nullable error);
/**
* 上传/下载进度Block
*
* @param progress 进度 0%-100%
* @discussion 如果下载的文件是以 Tranfer-Encoding 为 chunked 的形式传输,那么 progress 为已下载文件大小的负数
*/
typedef void(^NIMHttpProgressBlock)(float progress);
/**
* 下载Block
*
* @param error 错误信息,成功时为nil
*/
typedef void(^NIMDownloadCompleteBlock)(NSError * __nullable error);
/**
* 资源管理
*/
@protocol NIMResourceManager <NSObject>
/**
* 上传文件
*
* @param filepath 上传文件路径
* @param progress 进度Block
* @param completion 上传Block
*/
- (void)upload:(NSString *)filepath
progress:(nullable NIMHttpProgressBlock)progress
completion:(nullable NIMUploadCompleteBlock)completion;
/**
* 下载文件
*
* @param urlString 下载的RL
* @param filepath 下载路径
* @param progress 进度Block
* @param completion 完成Block
*/
- (void)download:(NSString *)urlString
filepath:(NSString *)filepath
progress:(nullable NIMHttpProgressBlock)progress
completion:(nullable NIMDownloadCompleteBlock)completion;
/**
* 取消上传/下载任务
*
* @param filepath 上传/下载任务对应的文件路径
* @discussion 如果同一个文件同时上传或者下载(理论上不应该出现这种情况),ResourceManager会进行任务合并,基于这个原则cancel的操作对象是某个文件对应的所有的上传/下载任务
*/
- (void)cancelTask:(NSString *)filepath;
/**
* 规范化 URL 地址
*
* @param urlString url 地址
* @discussion 按照 NIMSDK 的要求对 url 进行规范化处理,调用该接口等同于同时调用 convertHttpToHttps: 和 convertURLToAcceleratedURL:
*/
- (NSString *)normalizeURLString:(NSString *)urlString;
/**
* 将 http url 转换为 https url
*
* @param urlString http url 地址
* @discussion SDK 会自动处理除自定义消息外所有消息内的 http url 以保证符合苹果的审核请求,但是自定义消息中的 http 地址 SDK 并不知道具体属性在哪,所以在做这些文件下载时,需要上层自己处理
* 如果传入的 url 是 https 地址,直接返回字符串本身。如果传入的 url 是云信无法识别 host 的 http 地址,直接返回添加了 https 的地址
*/
- (NSString *)convertHttpToHttps:(NSString *)urlString;
/**
* 将 url 转换为加速后的 CDN url 地址
*
* @param urlString 未加速 url 地址
* @discussion SDK 会自动处理除自定义消息外所有消息内的 url 进行 CDN 加速,但是自定义消息中的 url 地址 SDK 并不知道具体属性在哪,所以在做这些文件下载时,需要上层传入对应的 URL 替换为走 CDN 格式的地址,以获得 CDN 加速的效果
*/
- (NSString *)convertURLToAcceleratedURL:(NSString *)urlString;
/**
* 将传入的 nos 图片 url 调整为缩略图形式 url
*
* @param urlString 图片url
*
*/
- (NSString *)imageThumbnailURL:(NSString *)urlString;
/**
* 将传入的 nos 视频 url 调整为缩略图形式 url
*
* @param urlString 视频url
*
*/
- (NSString *)videoThumbnailURL:(NSString *)urlString;
/**
* 搜索缓存的资源文件
*
* @param option 搜索选项
* @param completion 完成回调
*/
- (void)searchResourceFiles:(NIMResourceQueryOption *)option
completion:(NIMResourceSearchHandler)completion;
/**
* 删除缓存的资源文件
*
* @param option 搜索选项
* @param completion 完成回调
*/
- (void)removeResourceFiles:(NIMResourceQueryOption *)option
completion:(NIMResourceDeleteHandler)completion;
@end
NS_ASSUME_NONNULL_END