之前项目中有过下载视频的需求,于是满心欢喜的去github上搜索文件下载工具类,结果略失望,竟然没有一个相当满意的。虽然AFNetworking中单个文件下载功能已经相当完善,但是我需要一些比如全部暂停,全部开始之类的管理的功能,于是就试着自己动手造了个轮子。
其实文件下载,从根本上说就是两种方式:NSURLConnection或NSURLSession。
首先一个文件加入到下载队列后可能会有如下5种状态:下载中,等待中,暂停中,下载完成,下载失败。
|
|
然后我希望在初始化下载管理类后能只调用一个方法就开始去进行文件下载,然后就等待接收回调方法了,于是
|
|
接着,为了实现多个文件同时下载时的各种控制,我创建了如下诸多方法:
|
|
为了知道各个文件的下载状态,有如下方法:
|
|
最后,对于下载过程中以及完成后的各种状态需要监测
|
|
至于文件如何从网络获取,核心代码无非是调用如下几个方法:
|
|
或者是如下几个方法:
|
|
更或者直接用AFNetworking也可以。