iOS- 利用AFNetworking3.0+(最新AFN) - 實(shí)現(xiàn)文件斷點(diǎn)下載

0.導(dǎo)入框架準(zhǔn)備工作

?1. 將AFNetworking3.0+框架程序拖拽進(jìn)項(xiàng)目

?2. 或使用Cocopod 導(dǎo)入AFNetworking3.0+

?3.??引入

#import "AFNetworking.h"

---->

1.UI準(zhǔn)備工作

A. 定義一個(gè)全局的 NSURLSessionDownloadTask:下載管理句柄

由其負(fù)責(zé)所有的網(wǎng)絡(luò)操作請(qǐng)求

@interfaceViewController ()

{

// 下載句柄

NSURLSessionDownloadTask *_downloadTask;

}

.h文件

#import

@interfaceViewController : UIViewController

// 下載文件顯示

@property (weak, nonatomic) IBOutlet UIImageView *imageView;

// 下載進(jìn)度條顯示

@property (weak, nonatomic) IBOutlet UIProgressView *progressView;

@end

.m文件

@interfaceViewController ()

{

// 下載句柄

NSURLSessionDownloadTask *_downloadTask;

}

2.利用AFN實(shí)現(xiàn)文件下載操作細(xì)節(jié)

?(void)downFileFromServer{

//遠(yuǎn)程地址

NSURL *URL = [NSURL URLWithString:@"http://www.baidu.com/img/bdlogo.png"];

//默認(rèn)配置

NSURLSessionConfiguration *configuration = [NSURLSessionConfiguration defaultSessionConfiguration];

//AFN3.0+基于封住URLSession的句柄

AFURLSessionManager *manager = [[AFURLSessionManager alloc] initWithSessionConfiguration:configuration];

//請(qǐng)求

NSURLRequest *request = [NSURLRequest requestWithURL:URL];

//下載Task操作

_downloadTask = [manager downloadTaskWithRequest:request progress:^(NSProgress * _Nonnull downloadProgress) {

// @property int64_t totalUnitCount;???? 需要下載文件的總大小

// @property int64_t completedUnitCount; 當(dāng)前已經(jīng)下載的大小

// 給Progress添加監(jiān)聽 KVO

NSLog(@"%f",1.0 * downloadProgress.completedUnitCount / downloadProgress.totalUnitCount);

// 回到主隊(duì)列刷新UI

dispatch_async(dispatch_get_main_queue(), ^{

// 設(shè)置進(jìn)度條的百分比

self.progressView.progress = 1.0 * downloadProgress.completedUnitCount / downloadProgress.totalUnitCount;

});

} destination:^NSURL * _Nonnull(NSURL * _Nonnull targetPath, NSURLResponse * _Nonnull response) {

//- block的返回值, 要求返回一個(gè)URL, 返回的這個(gè)URL就是文件的位置的路徑

NSString *cachesPath = [NSSearchPathForDirectoriesInDomains(NSCachesDirectory, NSUserDomainMask, YES) lastObject];

NSString *path = [cachesPath stringByAppendingPathComponent:response.suggestedFilename];

return[NSURL fileURLWithPath:path];

} completionHandler:^(NSURLResponse * _Nonnull response, NSURL * _Nullable filePath, NSError * _Nullable error) {

//設(shè)置下載完成操作

// filePath就是你下載文件的位置腕铸,你可以解壓姨拥,也可以直接拿來使用

NSString *imgFilePath = [filePath path];// 將NSURL轉(zhuǎn)成NSString

UIImage *img = [UIImage imageWithContentsOfFile:imgFilePath];

self.imageView.image = img;

}];

}

3.關(guān)于暫停和繼續(xù)

- (IBAction)stopDownloadBtnClick:(id)sender {

//暫停下載

[_downloadTask suspend];

}

- (IBAction)startDownloadBtnClick:(id)sender {

//開始下載

[_downloadTask resume];

}

4.檢測(cè)網(wǎng)絡(luò)狀態(tài)--優(yōu)化用戶體驗(yàn)

- (void)viewDidLoad {

[super viewDidLoad];

//網(wǎng)絡(luò)監(jiān)控句柄

AFNetworkReachabilityManager *manager = [AFNetworkReachabilityManager sharedManager];

//要監(jiān)控網(wǎng)絡(luò)連接狀態(tài),必須要先調(diào)用單例的startMonitoring方法

[manager startMonitoring];

[manager setReachabilityStatusChangeBlock:^(AFNetworkReachabilityStatus status) {

//status:

//AFNetworkReachabilityStatusUnknown????????? = -1,? 未知

//AFNetworkReachabilityStatusNotReachable???? = 0,?? 未連接

//AFNetworkReachabilityStatusReachableViaWWAN = 1,?? 3G

//AFNetworkReachabilityStatusReachableViaWiFi = 2,?? 無線連接

NSLog(@"%d", status);

}];

//準(zhǔn)備從遠(yuǎn)程下載文件. -> 請(qǐng)點(diǎn)擊下面開始按鈕啟動(dòng)下載任務(wù)

[self downFileFromServer];

}

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市礁叔,隨后出現(xiàn)的幾起案子享甸,更是在濱河造成了極大的恐慌嗽冒,老刑警劉巖猖任,帶你破解...
    沈念sama閱讀 219,270評(píng)論 6 508
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場(chǎng)離奇詭異寇壳,居然都是意外死亡醒颖,警方通過查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,489評(píng)論 3 395
  • 文/潘曉璐 我一進(jìn)店門壳炎,熙熙樓的掌柜王于貴愁眉苦臉地迎上來泞歉,“玉大人,你說我怎么就攤上這事匿辩∈枞眨” “怎么了?”我有些...
    開封第一講書人閱讀 165,630評(píng)論 0 356
  • 文/不壞的土叔 我叫張陵撒汉,是天一觀的道長(zhǎng)沟优。 經(jīng)常有香客問我,道長(zhǎng)睬辐,這世上最難降的妖魔是什么挠阁? 我笑而不...
    開封第一講書人閱讀 58,906評(píng)論 1 295
  • 正文 為了忘掉前任宾肺,我火速辦了婚禮,結(jié)果婚禮上侵俗,老公的妹妹穿的比我還像新娘锨用。我一直安慰自己,他們只是感情好隘谣,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,928評(píng)論 6 392
  • 文/花漫 我一把揭開白布增拥。 她就那樣靜靜地躺著,像睡著了一般寻歧。 火紅的嫁衣襯著肌膚如雪掌栅。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 51,718評(píng)論 1 305
  • 那天码泛,我揣著相機(jī)與錄音猾封,去河邊找鬼。 笑死噪珊,一個(gè)胖子當(dāng)著我的面吹牛晌缘,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播痢站,決...
    沈念sama閱讀 40,442評(píng)論 3 420
  • 文/蒼蘭香墨 我猛地睜開眼磷箕,長(zhǎng)吁一口氣:“原來是場(chǎng)噩夢(mèng)啊……” “哼!你這毒婦竟也來了阵难?” 一聲冷哼從身側(cè)響起搀捷,我...
    開封第一講書人閱讀 39,345評(píng)論 0 276
  • 序言:老撾萬榮一對(duì)情侶失蹤,失蹤者是張志新(化名)和其女友劉穎多望,沒想到半個(gè)月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體氢烘,經(jīng)...
    沈念sama閱讀 45,802評(píng)論 1 317
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡怀偷,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,984評(píng)論 3 337
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了播玖。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片椎工。...
    茶點(diǎn)故事閱讀 40,117評(píng)論 1 351
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖蜀踏,靈堂內(nèi)的尸體忽然破棺而出维蒙,到底是詐尸還是另有隱情,我是刑警寧澤果覆,帶...
    沈念sama閱讀 35,810評(píng)論 5 346
  • 正文 年R本政府宣布颅痊,位于F島的核電站,受9級(jí)特大地震影響局待,放射性物質(zhì)發(fā)生泄漏斑响。R本人自食惡果不足惜菱属,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,462評(píng)論 3 331
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望舰罚。 院中可真熱鬧纽门,春花似錦、人聲如沸营罢。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,011評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽饲漾。三九已至蝙搔,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間能颁,已是汗流浹背杂瘸。 一陣腳步聲響...
    開封第一講書人閱讀 33,139評(píng)論 1 272
  • 我被黑心中介騙來泰國(guó)打工, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留伙菊,地道東北人败玉。 一個(gè)月前我還...
    沈念sama閱讀 48,377評(píng)論 3 373
  • 正文 我出身青樓,卻偏偏與公主長(zhǎng)得像镜硕,于是被迫代替她去往敵國(guó)和親运翼。 傳聞我的和親對(duì)象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 45,060評(píng)論 2 355

推薦閱讀更多精彩內(nèi)容