NSURLSession的使用(1),nsurlsession使用
一、建立一個Session,並且對其進行初始化
包含三種建立方式:
1、+ (NSURLSession *)sharedSession 單例模式 2、+ (NSURLSession *)sessionWithConfiguration:(NSURLSessionConfiguration *)configuration 這是常規的方式 3、+ (NSURLSession *)sessionWithConfiguration:(NSURLSessionConfiguration *)configuration delegate:(nullable id <NSURLSessionDelegate>)delegate delegateQueue:(nullable NSOperationQueue *)queue 這是常用的方式 配置方式是也是有三種: 1、+ (NSURLSessionConfiguration *)defaultSessionConfiguration 常規的配置 2、+ (NSURLSessionConfiguration *)ephemeralSessionConfiguration 臨時配置 3、+ (NSURLSessionConfiguration *)backgroundSessionConfigurationWithIdentifier: 運行在背景配置 注意:設定Configuration的值不會改變當前Session方式,只有當你重新初始化一個Session的時候生效
NSURLSessionConfiguration *myconfiguration = [NSURLSessionConfiguration backgroundSessionConfigurationWithIdentifier:@"backgroundsession"]; //請求的緩衝策略 myconfiguration.requestCachePolicy = NSURLRequestUseProtocolCachePolicy; //資料轉送逾時,當恢複傳輸時會清零 myconfiguration.timeoutIntervalForRequest = 5; //單條請求逾時,決定一條請求的最長生命週期 myconfiguration.timeoutIntervalForResource = 5; //請求的服務類型 myconfiguration.networkServiceType = NSURLNetworkServiceTypeDefault; //是否允許使用移動網路(電話網路)default is YES myconfiguration.allowsCellularAccess = YES; //後台模式生效,YES允許自適應系統效能調節 myconfiguration.discretionary = YES; self.testSession = [NSURLSession sessionWithConfiguration:myconfiguration delegate:self delegateQueue:[NSOperationQueue currentQueue]];
二、實現代理(Session-Level)
選用第三種初始化方式建立的Session會有三個Session層級的代理供大家使用
//session關閉回調-(void)URLSession:(NSURLSession *)session didBecomeInvalidWithError:(NSError *)error{ NSLog(@"%s,%@",__func__,error);}//認證安全問題-(void)URLSession:(NSURLSession *)session didReceiveChallenge:(NSURLAuthenticationChallenge *)challenge completionHandler:(void (^)(NSURLSessionAuthChallengeDisposition, NSURLCredential * _Nullable))completionHandler{ }//後台網路任務完成// 將回調 :-application:handleEventsForBackgroundURLSession:completionHandler:-(void)URLSessionDidFinishEventsForBackgroundURLSession:(NSURLSession *)session{ }