NIMSDK-iOS
载入中...
搜索中...
未找到
NIMResourceManagerProtocol.h
浏览该文件的文档.
1//
2// NIMResourceManager.h
3// NIMLib
4//
5// Created by Netease.
6// Copyright (c) 2015 Netease. All rights reserved.
7//
8
9#import <Foundation/Foundation.h>
10
14
15NS_ASSUME_NONNULL_BEGIN
16
17/**
18 * 缓存搜索 block
19 *
20 * @param error 错误,如果成功则 error 为 nil
21 * @param results 成功时的结果列表,内部为 NIMCacheQueryResult
22 */
23typedef void(^NIMResourceSearchHandler)(NSError * __nullable error, NSArray<NIMCacheQueryResult *> * __nullable results);
24
25/**
26 * 缓存删除 block
27 *
28 * @param error 错误,如果成功则 error 为 nil
29 * @param freeBytes 释放的磁盘空间大小
30 */
31typedef void(^NIMResourceDeleteHandler)(NSError * __nullable error, long long freeBytes);
32
33
34/**
35 * 上传Block
36 *
37 * @param urlString 上传后得到的URL,失败时为nil
38 * @param error 错误信息,成功时为nil
39 */
40typedef void(^NIMUploadCompleteBlock)(NSString * __nullable urlString,NSError * __nullable error);
41
42/**
43 * 文件快传查询完成Block
44 *
45 * @param urlString 查询后的URL,如果未上传过该文件,则为nil
46 * @param threshold 支持文件快传的文件大小阈值,小于该阈值的则不支持快传,单位为Byte
47 * @param error 文件快传请求的错误信息,失败是为nil
48 */
49typedef void(^NIMFileQuickTransferCompleteBlock)(NSString * __nullable urlString, NSInteger threshold, NSError * __nullable error);
50
51/**
52 * 上传/下载进度Block
53 *
54 * @param progress 进度 0%-100%
55 * @discussion 如果下载的文件是以 Tranfer-Encoding 为 chunked 的形式传输,那么 progress 为已下载文件大小的负数
56 */
57typedef void(^NIMHttpProgressBlock)(float progress);
58
59
60/**
61 * 下载Block
62 *
63 * @param error 错误信息,成功时为nil
64 */
65typedef void(^NIMDownloadCompleteBlock)(NSError * __nullable error);
66
67/**
68 * 短链换源链完成回调
69 * @param error 错误信息,成功时nil
70 * @param urlString 源链
71 */
72typedef void(^NIMFetchURLCompletion)(NSError * __nullable error, NSString * __nullable urlString);
73
74/**
75 * 资源管理
76 */
77@protocol NIMResourceManager <NSObject>
78/**
79 * 上传文件
80 *
81 * @param filepath 上传文件路径
82 * @param progress 进度Block
83 * @param completion 上传Block
84 */
85- (void)upload:(NSString *)filepath
86 progress:(nullable NIMHttpProgressBlock)progress
87 completion:(nullable NIMUploadCompleteBlock)completion;
88
89/**
90 * 上传文件
91 *
92 * @param filepath 上传文件路径
93 * @param scene 场景分组
94 * @param progress 进度Block
95 * @param completion 上传Block
96 */
97- (void)upload:(NSString *)filepath
98 scene:(nonnull NSString *)scene
99 progress:(nullable NIMHttpProgressBlock)progress
100 completion:(nullable NIMUploadCompleteBlock)completion;
101
102/**
103 * 上传文件
104 *
105 * @param filepath 上传文件路径
106 * @param scene 场景分组
107 * @param md5 文件MD5
108 * @param progress 进度Block
109 * @param completion 上传Block
110 */
111- (void)upload:(NSString * _Nonnull)filepath
112 scene:(nullable NSString *)scene
113 md5:(nullable NSString *)md5
114 progress:(nullable NIMHttpProgressBlock)progress
115 completion:(nullable NIMUploadCompleteBlock)completion;
116
117/**
118 * 上传文件
119 *
120 * @param filepath 上传文件路径
121 * @param extraInfo 资源辅助信息
122 * @param progress 进度Block
123 * @param completion 上传Block
124 */
125- (void)upload:(NSString * _Nonnull)filepath
126 extraInfo:(nullable NIMResourceExtraInfo *)extraInfo
127 progress:(nullable NIMHttpProgressBlock)progress
128 completion:(nullable NIMUploadCompleteBlock)completion;
129
130- (void)checkFileQuickTransfer:(NSString *)MD5
131 fileSize:(uint64_t)size
132 option:(NIMResourceExtraInfo *)option
133 completion:(NIMFileQuickTransferCompleteBlock)completion;
134
135/**
136 * 下载文件
137 *
138 * @param urlString 下载的RL
139 * @param filepath 下载路径
140 * @param progress 进度Block
141 * @param completion 完成Block
142 */
143- (void)download:(NSString *)urlString
144 filepath:(NSString *)filepath
145 progress:(nullable NIMHttpProgressBlock)progress
146 completion:(nullable NIMDownloadCompleteBlock)completion;
147
148/**
149 * 下载文件
150 *
151 * @param urlString 下载的RL
152 * @param filepath 下载路径
153 * @param extraInfo 资源辅助信息
154 * @param progress 进度Block
155 * @param completion 完成Block
156 */
157- (void)download:(NSString *)urlString
158 filepath:(NSString *)filepath
159 extraInfo:(NIMResourceExtraInfo * _Nullable)extraInfo
160 progress:(NIMHttpProgressBlock _Nullable)progress
161 completion:(NIMDownloadCompleteBlock _Nullable)completion;
162
163/**
164 * 下载文件
165 *
166 * @param urlString 下载的RL
167 * @param filepath 下载路径
168 * @param type Fcs下载类型(特殊功能,开通请联系技术支持)
169 * @param extraInfo 资源辅助信息
170 * @param progress 进度Block
171 * @param completion 完成Block
172 */
173- (void)download:(NSString *)urlString
174 filepath:(NSString *)filepath
175 type:(NSInteger)type
176 extraInfo:(NIMResourceExtraInfo *)info
177 progress:(NIMHttpProgressBlock)progress
178 completion:(NIMDownloadCompleteBlock)completion;
179
180/**
181 * 取消上传/下载任务
182 *
183 * @param filepath 上传/下载任务对应的文件路径
184 * @discussion 如果同一个文件同时上传或者下载(理论上不应该出现这种情况),ResourceManager会进行任务合并,基于这个原则cancel的操作对象是某个文件对应的所有的上传/下载任务
185 */
186- (void)cancelTask:(NSString *)filepath;
187
188
189/**
190 * 规范化 URL 地址
191 *
192 * @param urlString url 地址
193 * @discussion 按照 NIMSDK 的要求对 url 进行规范化处理,调用该接口等同于同时调用 convertHttpToHttps: 和 convertURLToAcceleratedURL:
194 */
195- (NSString *)normalizeURLString:(NSString *)urlString;
196
197/**
198 * 将 http url 转换为 https url
199 *
200 * @param urlString http url 地址
201 * @discussion SDK 会自动处理除自定义消息外所有消息内的 http url 以保证符合苹果的审核请求,但是自定义消息中的 http 地址 SDK 并不知道具体属性在哪,所以在做这些文件下载时,需要上层自己处理
202 * 如果传入的 url 是 https 地址,直接返回字符串本身。如果传入的 url 是云信无法识别 host 的 http 地址,直接返回添加了 https 的地址
203 */
204- (NSString *)convertHttpToHttps:(NSString *)urlString;
205
206/**
207 * 将 url 转换为加速后的 CDN url 地址
208 *
209 * @param urlString 未加速 url 地址
210 * @discussion SDK 会自动处理除自定义消息外所有消息内的 url 进行 CDN 加速,但是自定义消息中的 url 地址 SDK 并不知道具体属性在哪,所以在做这些文件下载时,需要上层传入对应的 URL 替换为走 CDN 格式的地址,以获得 CDN 加速的效果
211 */
212- (NSString *)convertURLToAcceleratedURL:(NSString *)urlString;
213
214
215/**
216 * 将传入的 nos 图片 url 调整为缩略图形式 url
217 *
218 * @param urlString 图片url
219 *
220 */
221- (NSString *)imageThumbnailURL:(NSString *)urlString;
222
223/**
224 * 将传入的 nos 视频 url 调整为缩略图形式 url
225 *
226 * @param urlString 视频url
227 *
228 */
229- (NSString *)videoThumbnailURL:(NSString *)urlString;
230
231
232/**
233 * 搜索缓存的资源文件
234 *
235 * @param option 搜索选项
236 * @param completion 完成回调
237 */
238- (void)searchResourceFiles:(NIMResourceQueryOption *)option
239 completion:(NIMResourceSearchHandler)completion;
240
241/**
242 * 删除缓存的资源文件
243 *
244 * @param option 搜索选项
245 * @param completion 完成回调
246 */
247- (void)removeResourceFiles:(NIMResourceQueryOption *)option
248 completion:(NIMResourceDeleteHandler)completion;
249
250/**
251 * 使用短链换源链
252 *
253 * @param shortCode 短链
254 * @param completion 完成回调
255 * @discussion 当用户后台配置了NOS文件安全,文件上传的URL为短链,无法直接下载,
256 * 可通过该接口换取源链
257 */
258- (void)fetchNOSURLWithURL:(NSString *)shortCode
259 completion:(NIMFetchURLCompletion)completion;
260
261/**
262 * 使用短链换源链
263 *
264 * @param shortCode 短链
265 * @param roomId 聊天室ID
266 * @param completion 完成回调
267 * @discussion 当用户后台配置了NOS文件安全,文件上传的URL为短链,无法直接下载,
268 * 可通过该接口换取源链
269 */
270- (void)fetchNOSURLWithURL:(NSString *)shortCode
271 roomId:(NSString * _Nullable)roomId
272 completion:(NIMFetchURLCompletion)completion;
273@end
274
275
276NS_ASSUME_NONNULL_END
void(^ NIMDownloadCompleteBlock)(NSError *__nullable error)
Definition: NIMResourceManagerProtocol.h:65
void(^ NIMFileQuickTransferCompleteBlock)(NSString *__nullable urlString, NSInteger threshold, NSError *__nullable error)
Definition: NIMResourceManagerProtocol.h:49
void(^ NIMHttpProgressBlock)(float progress)
Definition: NIMResourceManagerProtocol.h:57
NS_ASSUME_NONNULL_BEGIN typedef void(^ NIMResourceSearchHandler)(NSError *__nullable error, NSArray< NIMCacheQueryResult * > *__nullable results)
void(^ NIMFetchURLCompletion)(NSError *__nullable error, NSString *__nullable urlString)
Definition: NIMResourceManagerProtocol.h:72
void(^ NIMUploadCompleteBlock)(NSString *__nullable urlString, NSError *__nullable error)
Definition: NIMResourceManagerProtocol.h:40
void(^ NIMResourceDeleteHandler)(NSError *__nullable error, long long freeBytes)
Definition: NIMResourceManagerProtocol.h:31
Definition: NIMCacheQuery.h:38
Definition: NIMResourceExtraInfo.h:18
Definition: NIMCacheQuery.h:18