美文网首页AFNetworkingiOSiOS
基于AFNetworking的iOS文件下载框架

基于AFNetworking的iOS文件下载框架

作者: feae4ff3b06a | 来源:发表于2016-06-28 15:59 被阅读2006次

接着上一篇 简单易用的iOS数据库操作框架 文章,这里简单介绍下基于 AFNetworking 的iOS文件下载框架,源码请点击这里 JCDownloader

这套框架目前支持以下下载操作:

  1. 单个文件的下载、暂停、删除等操作。
  2. 通过groupId操作文件下载列表。
  3. 支持断点下载。
单个文件下载操作
JCDownloadItem *downloadItem = [[JCDownloadItem alloc] init];
downloadItem.downloadUrl = @"download url";
downloadItem.downloadFilePath = @"download file path";
self.operation = [JCDownloadOperation operationWithItem:downloadItem];
[self.operation startWithProgressBlock:^(NSProgress *progress) {
    //update progress
} completionBlock:^(NSURL *filePath, NSError *error) {
    //download operation completion, do something
}];
[self.operation resetProgressBlock:^(NSProgress *progress) {
    //update progress
} completionBlock:^(NSURL *filePath, NSError *error) {
    //download operation completion, do something
}];
[self.operation pauseDownload];
[self.operation removeDownload];
文件列表下载操作
extern NSString *const JCTImageDownloadGroupId;
NSMutableArray *downloadList = [NSMutableArray array];
for (NSInteger index = 0; index < [self urlList].count; index++) {
    JCTImageDownloadItem *item = [[JCTImageDownloadItem alloc] init];
    item.groupId = JCTImageDownloadGroupId;
    item.downloadUrl = [self urlList][index];
    item.downloadFilePath = [JCDownloadUtilities filePathWithFileName:[item.downloadUrl lastPathComponent] folderName:@"downloadImages"];
    JCDownloadOperation *operation = [JCDownloadOperation operationWithItem:item];
    [downloadList addObject:operation];
}
[[JCDownloadQueue sharedQueue] startDownloadList:downloadList];
[[JCDownloadQueue sharedQueue] startDownloadsWithGroupId:JCTImageDownloadGroupId];
[[JCDownloadQueue sharedQueue] pauseDownloadsWithGroupId:JCTImageDownloadGroupId];
[[JCDownloadQueue sharedQueue] removeDownloadsWithGroupId:JCTImageDownloadGroupId];
接收文件下载通知
// 文件下载唯一标识关键字,值为NSString对象
FOUNDATION_EXPORT NSString *const JCDownloadIdKey;
// 文件下载进度通知
FOUNDATION_EXPORT NSString *const JCDownloadProgressNotification;
// 文件下载进度关键字,值为NSProgress对象
FOUNDATION_EXPORT NSString *const JCDownloadProgressKey; 
// 文件下载操作完成通知
FOUNDATION_EXPORT NSString *const JCDownloadCompletionNotification;
// 文件下载完成保存路径关键字,值为NSURL对象
FOUNDATION_EXPORT NSString *const JCDownloadCompletionFilePathKey;
// 文件下载出错关键字,值为NSError对象
FOUNDATION_EXPORT NSString *const JCDownloadCompletionErrorKey;
文件下载状态
下载状态.png

目前这个下载框架还有一定的业务耦合性,下载完成的操作依旧保存在下载队列里,仅为了方便UI显示下载完成的数据。以后可以将这部分功能解耦,把它交给数据库来处理。

相关文章

  • 基于AFNetworking的iOS文件下载框架

    接着上一篇 简单易用的iOS数据库操作框架 文章,这里简单介绍下基于 AFNetworking 的iOS文件下载框...

  • 2018-08-06

    #AFNetworking源码阅读系列 一 前言: AFNetWorking一款轻量级网络请求开源框架,基于iOS...

  • iOS 使用AFNetWorking下载文件

    使用AFNetWorking下载文件时,需要包含AFNetWorking框架(使用的是2.3.0版本) 当只需单个...

  • iOS中解压rar文件

    iOS中基于UnrarKit解压rar文件 iOS中解压rar文件,使用UnrarKit框架解压,框架github...

  • AFNetworking刨根问底

    AFNetworking网络框架在iOS开发中的霸主地位已经根深蒂固,本篇将基于3.2.1版本对框架的几个核心模块...

  • iOS 开发之网络编程(二)

    第三方网络框架 AFNetworking 一款轻量级网络请求开源框架,基于iOS和mac OS 网络进行扩展的高性...

  • 基于AFNetworking3.0封装的网络请求

    基于AFNetworking3.0, Get请求、Post请求、文件上传、下载及缓存处理的简单封装 GitHub下...

  • AFNetworking的简单封装

    AFNetworking下载地址: AFNetworking 1.导入AFNetworking文件 2.实现的功能...

  • AFNetworking框架阅读

    Whats AFNetworking是iOS开发中进行网络数据请求的框架之一。目前大多数的app的网络层都是基于此...

  • AFNetworking多线程分析

    AFNetworking多线程分析 AFNetworking是目前最常用的iOS的网络开发框架。它是对Apple系...

网友评论

  • 台灯下的小卫:这个resumeData是怎么存储的?
    feae4ff3b06a:@台灯下的小卫 以文件的形式缓存到磁盘,每次断点续传时会做有效性校验并更新resumeData
  • macfai:学习一下
    feae4ff3b06a:@macfai 谢谢关注,欢迎提出改善意见

本文标题:基于AFNetworking的iOS文件下载框架

本文链接:https://www.haomeiwen.com/subject/tkytjttx.html