ios 视频断点续传常识

来源:互联网 发布:java难题 编辑:程序博客网 时间:2024/06/05 19:21

 说实话之前都没做过视频下载,这次做了才了解一下,我写博客就是为了防止忘记.好记性不如烂笔头,我记性很差,简单记录一下方便以后查找.


1.我做视频下载的时候Http三方库用的是ASIHttp,很古老的一个,几年前已经停止更新了,公司项目一直用的这个,我这个刚来的一时想改也改不了.后期肯定会替换.

2.视频下载其实很简单,创建下载请求,然后给他一个临时文件路径,一个最终存储路径,请求启动就OK了,剩下的不用操心了.

临时文件路径存储视频下载的中间文件.下载成功后会自动存储到最终存储路径中.

设置临时路径.

request.temporaryFileDownloadPath = tempFilepath;


很关键的一点,设置允许断点续传.
request.allowResumeForFileDownloads = YES;

3.关于下载队列

多个视频下载免不了用到队列,ASI中已经封装好了一个类ASINetwokQueue,创建的请求都加到queue里面,他就会一个个执行,当然你可以同时下载多个,这个可以设置.

4.当然下载对应的还有取消下载,怎么取消?

找到你要取消那个请求,调用 [operation cancel] 或者[operation  clearDelegatesAndCancel],只不过前者是会调用请求失败的回调,后者不会.看情况选择.

5.如果队列里其中一个请求失败了,默认其他请求也会自动取消下载,如果不想这样,就设置队列的一个属性:

        [_requestQueuesetShouldCancelAllRequestsOnFailure:NO];

 6.关于进度

每个请求都可以跟踪下载进度,你可以用第三方已经提供的 : [_requestsetDownloadProgressDelegate:self];然后就可以 利用下面这个回调去在UI上更新你的进度的.

- (void)setProgress:(float)newProgress{         

//这个地方更新你的进度

         }

当然这个是没有具体下载多少字节的数据的,你可以在 - (void)request:(ASIHTTPRequest *)request didReceiveData:(NSData *)data;这个方法里面去获取你下载的字节数

[self.fileData appendData:data];

self.fileData.length就是当前已下载的字节数.自己转化成K 或者MB 或者GB

7.其他就是暂停,删除等细节,需要持久化一下,方便下次尽量继续下载.

0 0