文档章节

资源URL动态变化,NSURLSession实现断点续载

gdxz110
 gdxz110
发布于 2017/07/03 16:06
字数 413
阅读 46
收藏 0

iOS原生封装的NSURLSession能满足文件资源的上传下载任务功能,同时提供系统级别的支持,比如支持后台进行下载,设置进行下载的网络类型判断等等

然而使用过程中会遇到一个资源URL每次请求可能服务器返回的都不一样的问题

问题场景:APP下载一个任务,并把该任务记录到本地数据库,当APP重启时,从本地数据库恢复任务,但此时再请求资源时,因为资源的URL变化导致继续下载失败。

解决方法:通过对下载任务的跟踪,下载时NSURLSession会在应用目录的tmp文件夹中生成CFNetworkDownload前缀的下载资源缓存文件,并且能通过任务的cancelByProducingResumeData获取resumeData数据,resumeData主要记录任务的各种信息,如资源链接地址,下载进度跟时间。所以当资源URL改变时,即需要修改resumeData里面的资源信息,resumeData是plist文件,内容格式如图所示:

里面的字段通俗易通。

所以在下载需要恢复任务时,对resumeData里面的资源url信息进行修改,从而达到断点续载的效果。

代码如图:

修改了resumeData后使用

 [backgroundSession downloadTaskWithResumeData:downloadTask.resumeData];

即可继续进行之前下载中的任务了。

(P.S 在下载过程中注意在关键点保存资源文件跟resumeData文件到Document文件夹,因为tmp文件夹在存储空间不足时会给回收)

 

© 著作权归作者所有

gdxz110
粉丝 7
博文 76
码字总数 30242
作品 0
广州
程序员
私信 提问
iOS 下载URL不断改变的情况下 使用 resumeData做断点续传

Apple 在 iOS 7 之后将原有的 NSURLConnection 替换成了新的 NSURLSession ,新的 NSURLSession 包含诸多新的特性,其中有一项就是在应用退出到后台以及崩溃后,系统可以继续帮我们进行上传、...

卢叁
2017/10/31
0
0
iOS 后台下载及管理库

说起下载第一个想起的就是ASI。一年前接手的新项目是核心功能是视频相关业务,在修改和解决视频下载相关的问题的时候让我体会到了ASI的下载的强大。后来新需求需要视频后台下载,使用NSURLSe...

LeavesLife
2017/09/18
0
0
【iOS】文件下载小记

文件的下载分为NSURLConnection与NSURLSession两种,前一种有恨悠久的历史了。使用相对麻烦,后者是新出来的,增加了一些额外的功能。 一、NSURLConnection实现下载 TIPS: 1、当NSURLConnec...

xn4545945
2014/07/18
0
0
NSURLSession详解

<1> NSURLSession 简介: { NSURLSession 是 iOS 7.0 之后推出的网络解决方案!用于替代 NSURLConnection, 针对下载/上传等复杂的网络操作提供了专门的解决方案! NSURLSession 使用更加简单/方...

就不穿小内
2015/12/11
112
0
IOS开发中 session&HTTPS&AFN

1.NSURLSession: ios7.0之后 代替URL connection 用于替代NSURLConnection 支持后台运行网络 暂停、停止、重启网络任务、 不再需要自己封装NSOperation 2.NSURLSession 可以发起以下任务 默...

KevinEmily
2016/02/21
110
0

没有更多内容

加载失败,请刷新页面

加载更多

ant 中的fileset include等拷贝

拷贝一个目录到指定目录下 例:<copy todir="${basedir}/new"> <fileset dir="${basedir}/old"> <include name="appgen" /> <include name="appgen/" /> <include name=appgen/**" /> <incl......

shzwork
11分钟前
1
0
react-jianshu项目的创建

创建项目 1、github上创建仓库react-jianshu 2、将项目克隆到本地git clone git@github.com:startjcu/react-jianshu.git 3、在当前目录(项目目录的上级目录)下执行create-react-app react-...

星闪海洋
20分钟前
2
0
OSChina 周二乱弹 —— 小哥哥,你可以教我写代码吗

Osc乱弹歌单(2019)请戳(这里) 【今日歌曲】 @nnnm: 生活大爆炸,结束了,这部陪伴了漫长时间的情景喜剧,最终是以诺贝尔奖和大团圆收尾的。虽然,不算精彩,但也是温馨。而少年谢尔顿的...

小小编辑
今天
235
11
typescript 接口 函数类型 可索引类型

函数类型 可索引类型 数字索引签名 字符串索引签名 数字索引签名返回值 必须是 字符串索引签名返回值的子集 只读索引签名

lilugirl
今天
3
0
Oracle SQL语法实例合集

如需转载请注明出处https://my.oschina.net/feistel/blog/3052024 目的:迅速激活Oracle SQL 参考:《Oracle从入门到精通》 ------------------------------------------------------------......

LoSingSang
今天
2
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部