iOS- 利用AFNetworking3.0+(最新AFN),afnetworking3.0afn

來源:互聯網
上載者:User

iOS- 利用AFNetworking3.0+(最新AFN),afnetworking3.0afn


官方建議AFN的使用方法

 

 0.匯入架構準備工作  •1. 將AFNetworking3.0+架構程式拖拽進項目 •2. 或使用Cocopod 匯入AFNetworking3.0+ •3.  引入#import "AFNetworking.h"

 

---->

 

1.UI準備工作  

 

A. 定義一個全域的 NSURLSessionDownloadTask:下載管理控制代碼    由其負責所有的網路操作請求

 

@interface ViewController (){    // 下載控制代碼    NSURLSessionDownloadTask *_downloadTask;}

 

.h檔案#import <UIKit/UIKit.h>@interface ViewController : UIViewController// 下載檔案顯示@property (weak, nonatomic) IBOutlet UIImageView *imageView;// 下載進度條顯示@property (weak, nonatomic) IBOutlet UIProgressView *progressView;@end.m檔案@interface ViewController (){    // 下載控制代碼    NSURLSessionDownloadTask *_downloadTask;}

 

2.利用AFN實現檔案下載操作細節  
- (void)downFileFromServer{       //遠程地址    NSURL *URL = [NSURL URLWithString:@"http://www.baidu.com/img/bdlogo.png"];    //預設配置    NSURLSessionConfiguration *configuration = [NSURLSessionConfiguration defaultSessionConfiguration];       //AFN3.0+基於封住URLSession的控制代碼    AFURLSessionManager *manager = [[AFURLSessionManager alloc] initWithSessionConfiguration:configuration];       //請求    NSURLRequest *request = [NSURLRequest requestWithURL:URL];       //下載Task操作    _downloadTask = [manager downloadTaskWithRequest:request progress:^(NSProgress * _Nonnull downloadProgress) {               // @property int64_t totalUnitCount;     需要下載檔案的總大小        // @property int64_t completedUnitCount; 當前已經下載的大小               // 給Progress添加監聽 KVO        NSLog(@"%f",1.0 * downloadProgress.completedUnitCount / downloadProgress.totalUnitCount);        // 回到主隊列重新整理UI        dispatch_async(dispatch_get_main_queue(), ^{        // 設定進度條的百分比            self.progressView.progress = 1.0 * downloadProgress.completedUnitCount / downloadProgress.totalUnitCount;        });    } destination:^NSURL * _Nonnull(NSURL * _Nonnull targetPath, NSURLResponse * _Nonnull response) {               //- block的傳回值, 要求返回一個URL, 返回的這個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) {        //設定下載完成操作        // filePath就是你下載檔案的位置,你可以解壓,也可以直接拿來使用               NSString *imgFilePath = [filePath path];// 將NSURL轉成NSString        UIImage *img = [UIImage imageWithContentsOfFile:imgFilePath];        self.imageView.image = img;    }];}
 3.關於暫停和繼續  
- (IBAction)stopDownloadBtnClick:(id)sender {    //暫停下載    [_downloadTask suspend];}- (IBAction)startDownloadBtnClick:(id)sender {    //開始下載    [_downloadTask resume];}
 4.檢測網路狀態--最佳化使用者體驗  
- (void)viewDidLoad {    [super viewDidLoad];       //網路監控控制代碼    AFNetworkReachabilityManager *manager = [AFNetworkReachabilityManager sharedManager];       //要監控網路連接狀態,必須要先調用單例的startMonitoring方法    [manager startMonitoring];       [manager setReachabilityStatusChangeBlock:^(AFNetworkReachabilityStatus status) {        //status:        //AFNetworkReachabilityStatusUnknown          = -1,  未知        //AFNetworkReachabilityStatusNotReachable     = 0,   未串連        //AFNetworkReachabilityStatusReachableViaWWAN = 1,   3G        //AFNetworkReachabilityStatusReachableViaWiFi = 2,   無線串連        NSLog(@"%d", status);    }];       //準備從遠程下載檔案. -> 請點擊下面開始按鈕啟動下載任務    [self downFileFromServer];}

 

>> My GitHub:源碼 https://github.com/SaupClear/AFNetworking3.0- 

 

· AFNetworking3.0以下的版本使用方法可以看我老版本的日誌:

iOS- 利用AFNetworking(AFN) - 實現檔案斷點下載

 

作者: 清澈Saup

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

本文著作權歸作者和部落格園共有,歡迎轉載,但必須保留此段聲明,且在文章頁面明顯位置給出原文串連。

 

 

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.