国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 系統(tǒng) > iOS > 正文

iOS-利用AFNetworking(AFN)-實現(xiàn)文件斷點下載

2019-11-14 20:46:05
字體:
供稿:網(wǎng)友
官方建議AFN的使用方法

 

 1. 定義一個全局的AFHttpClient:包含有

    1> baseURL

    2> 請求

    3> 操作隊列 NSOperationQueue

 2. 由AFHTTPRequestOperation負(fù)責(zé)所有的網(wǎng)絡(luò)操作請求

 

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

•1. 將框架程序拖拽進(jìn)項目
 
•2.  添加iOS框架引用
–SystemConfiguration.framework
–MobileCoreServices.framework
 
•3.  引入
#import "AFNetworking.h"
 
//下面用于下載完后解壓

#import "SSZ

 

 4. 修改xxx-Prefix.pch文件

#import <MobileCoreServices/MobileCoreServices.h>

#import <SystemConfiguration/SystemConfiguration.h>

 

1.AFN的客戶端,使用基本地址初始化,同時會實例化一個操作隊列,以便于后續(xù)的多線程處理

 

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

 1 #pragma mark 下載 2 - (IBAction)download 3 { 4     // 1. 建立請求 5     NSURLRequest *request = [_httpClient requestWithMethod:@"GET" path:@"download/Objective-C2.0.zip" parameters:nil]; 6      7     // 2. 操作 8     AFHTTPRequestOperation *op = [[AFHTTPRequestOperation alloc] initWithRequest:request]; 9     10     _downloadOperation = op;11     12     // 下載13     // 指定文件保存路徑,將文件保存在沙盒中14     NSArray *docs = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);15     NSString *path = [docs[0] stringByAppendingPathComponent:@"download.zip"];16     17     op.outputStream = [NSOutputStream outputStreamToFileAtPath:path append:NO];18     19     // 設(shè)置下載進(jìn)程塊代碼20     /*21      bytesRead                      當(dāng)前一次讀取的字節(jié)數(shù)(100k)22      totalBytesRead                 已經(jīng)下載的字節(jié)數(shù)(4.9M)23      totalBytesExpectedToRead       文件總大小(5M)24      */25     [op setDownloadProgressBlock:^(NSUInteger bytesRead, long long totalBytesRead, long long totalBytesExpectedToRead) {26         27         // 設(shè)置進(jìn)度條的百分比28         CGFloat precent = (CGFloat)totalBytesRead / totalBytesExpectedToRead;29         NSLog(@"%f", precent);30         31         _progressView.progress = precent;32     }];33     34     // 設(shè)置下載完成操作35     [op setCompletionBlockWithSuccess:^(AFHTTPRequestOperation *operation, id responSEObject) {36         37         // 下載完成之后,解壓縮文件38         /*39          參數(shù)1:要解結(jié)壓縮的文件名及路徑 path - > download.zip40          參數(shù)2:要解壓縮到的位置,目錄    - > document目錄41          */42         [SSZipArchive unzipFileAtPath:path toDestination:docs[0]];43         44         // 解壓縮之后,將原始的壓縮包刪除45         // NSFileManager專門用于文件管理操作,可以刪除,復(fù)制,移動文件等操作46         // 也可以檢查文件是否存在47         [[NSFileManager defaultManager] removeItemAtPath:path error:nil];48         49         // 下一步可以進(jìn)行進(jìn)一步處理,或者發(fā)送通知給用戶。50         NSLog(@"下載成功");51     } failure:^(AFHTTPRequestOperation *operation, NSError *error) {52         NSLog(@"下載失敗");53     }];54     55     // 啟動下載56     [_httpClient.operationQueue addOperation:op];57  }

 

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

 1 - (IBAction)pauseResume:(id)sender 2 { 3     // 關(guān)于暫停和繼續(xù),AFN中的數(shù)據(jù)不是線程安全的 4     // 如果使用操作的暫停和繼續(xù),會使得數(shù)據(jù)發(fā)生混亂 5     // 不建議使用此功能。 6     // 有關(guān)暫停和后臺下載的功能,NSURLsession中會介紹。 7     if (_downloadOperation.isPaused) { 8         [_downloadOperation resume]; 9     } else {10         [_downloadOperation pause];11     }12 }

 

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

 1 #pragma mark 檢測網(wǎng)路狀態(tài) 2 /* 3  AFNetworkReachabilityStatusUnknown          = -1,  未知 4  AFNetworkReachabilityStatusNotReachable     = 0,   未連接 5  AFNetworkReachabilityStatusReachableViaWWAN = 1,   3G 6  AFNetworkReachabilityStatusReachableViaWiFi = 2,   無線連接 7  */ 8 - (IBAction)checkNetwork:(id)sender 9 {10     // 1. AFNetwork 是根據(jù)是否能夠連接到baseUrl來判斷網(wǎng)絡(luò)連接狀態(tài)的11     // 提示:最好使用門戶網(wǎng)站來判斷網(wǎng)絡(luò)連接狀態(tài)。12     NSURL *url = [NSURL URLWithString:@"http://www.baidu.com"];13     14     AFHTTPClient *client = [[AFHTTPClient alloc] initWithBaseURL:url];15     _httpClient = client;16     17     [_httpClient setReachabilityStatusChangeBlock:^(AFNetworkReachabilityStatus status) {18 19         // 之所以區(qū)分無線和3G主要是為了替用戶省錢,省流量20         // 如果應(yīng)用程序占流量很大,一定要提示用戶,或者提供專門的設(shè)置,僅在無線網(wǎng)絡(luò)時使用!21         switch (status) {22             case AFNetworkReachabilityStatusReachableViaWiFi:23                 NSLog(@"無線網(wǎng)絡(luò)");24                 break;25             case AFNetworkReachabilityStatusReachableViaWWAN:26                 NSLog(@"3G網(wǎng)絡(luò)");27                 break;28             case AFNetworkReachabilityStatusNotReachable:29                 NSLog(@"未連接");30                 break;31             case AFNetworkReachabilityStatusUnknown:32                 NSLog(@"未知錯誤");33                 break;34         }35     }];36 }

 

                                                       

作者: 清澈Saup

出處: http://www.survivalescaperooms.com/qingche/

本文版權(quán)歸作者和博客園共有,歡迎轉(zhuǎn)載,但必須保留此段聲明,且在文章頁面明顯位置給出原文連接。

 

                            


發(fā)表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發(fā)表
主站蜘蛛池模板: 志丹县| 普定县| 鸡东县| 保亭| 邓州市| 安丘市| 灌南县| 崇义县| 定远县| 灌云县| 淅川县| 荣成市| 灵丘县| 囊谦县| 惠州市| 临清市| 新民市| 奎屯市| 定南县| 菏泽市| 花垣县| 石嘴山市| 富阳市| 湘潭县| 慈溪市| 贵溪市| 阳谷县| 东宁县| 阿瓦提县| 育儿| 水城县| 南康市| 化隆| 绥中县| 自治县| 博爱县| 拉萨市| 集安市| 古丈县| 祁东县| 清流县|