多多色-多人伦交性欧美在线观看-多人伦精品一区二区三区视频-多色视频-免费黄色视屏网站-免费黄色在线

國內最全IT社區平臺 聯系我們 | 收藏本站
阿里云優惠2
您當前位置:首頁 > php開源 > 綜合技術 > NSURLSession下載和斷點續傳

NSURLSession下載和斷點續傳

來源:程序員人生   發布時間:2015-05-19 08:36:23 閱讀次數:3182次

  NSURLSession是iOS7以后新的網絡接口,和常常用到NSURLConnection是類似的。在程序在前臺時,NSURLSession與NSURLConnection可以相互的替換。但是當用戶在對程序進行強迫關閉的時候此時NSURLSession會默許的自動斷開。相比而言NSURLSession的優勢主要體現在后臺操作時候,而且在最流行的框架AFNetworking中也對NSURLSession提供了更好的支持。

  主要提供的功能以下:

1 下載文件到內存中

2 下載文件到路徑

3 上傳制定的文件等

案例演示:圖片下載斷點續傳

主要代碼:

1、定義幾個全局變量

@interface ViewController () { NSURLSessionDownloadTask * _task; NSData * _data; NSURLSession * _session; NSURLRequest * _request; UIProgressView * _pro; UIImageView * _imageView; }

2、向視圖中添加圖片進度條

_imageView=[[UIImageView alloc] initWithFrame:CGRectMake(0, 0, 300, 300)]; _imageView.center=self.view.center; [self.view addSubview:_imageView]; _pro=[[UIProgressView alloc] initWithFrame:CGRectMake(_imageView.frame.origin.x, _imageView.frame.origin.y+400, 300, 40)];

3、向視圖中添加按鈕(一樣的方式添加3個)

UIButton * button=[[UIButton alloc] initWithFrame:CGRectMake(50, _imageView.frame.origin.y+400+20, 50, 40)]; button.backgroundColor=[UIColor blueColor]; [button setTitle:@"開始" forState:UIControlStateNormal]; [button addTarget:self action:@selector(ddLoad) forControlEvents:UIControlEventTouchUpInside]; button.layer.borderWidth=1; button.layer.borderColor=[UIColor blueColor].CGColor; button.layer.cornerRadius=5; [self.view addSubview:button];

4、通過AFNetworkReachabilityManager網絡狀態監測

- (void) _checkNet{ //開啟網絡狀態監控 [[AFNetworkReachabilityManager sharedManager] startMonitoring]; [[AFNetworkReachabilityManager sharedManager] setReachabilityStatusChangeBlock:^(AFNetworkReachabilityStatus status) { if(status==AFNetworkReachabilityStatusReachableViaWiFi){ NSLog(@"當前是wifi"); } if(status==AFNetworkReachabilityStatusReachableViaWWAN){ NSLog(@"當前是3G"); } if(status==AFNetworkReachabilityStatusNotReachable){ NSLog(@"當前是沒有網絡"); } if(status==AFNetworkReachabilityStatusUnknown){ NSLog(@"當前是未知網絡"); } }]; }

5、開始下載

- (void) ddLoad{ NSURLSessionConfiguration * config=[NSURLSessionConfiguration defaultSessionConfiguration]; _session=[NSURLSession sessionWithConfiguration:config delegate:self delegateQueue:nil]; // NSURL *url=[NSURL URLWithString:@src]; _request=[NSURLRequest requestWithURL:url]; _task= [_session downloadTaskWithRequest:_request]; NSLog(@"開始加載"); [_task resume]; }

6、設置暫停和回復

- (void) pause{ //暫停 NSLog(@"暫停下載"); [_task cancelByProducingResumeData:^(NSData *resumeData) { _data=resumeData; }]; _task=nil; } - (void) resume{ //恢復 NSLog(@"恢復下載"); if(!_data){ NSURL *url=[NSURL URLWithString:@src]; _request=[NSURLRequest requestWithURL:url]; _task=[_session downloadTaskWithRequest:_request]; }else{ _task=[_session downloadTaskWithResumeData:_data]; } [_task resume]; }

7、代理方法保存下載文件監控下載進度

#pragma mark - delegate - (void)URLSession:(NSURLSession *)session downloadTask:(NSURLSessionDownloadTask *)downloadTask didFinishDownloadingToURL:(NSURL *)location{ NSURL * url=[NSURL fileURLWithPath:@"/Users/jredu/Desktop/tt.png"]; NSFileManager * manager=[NSFileManager defaultManager]; [manager moveItemAtURL:location toURL:url error:nil]; dispatch_async(dispatch_get_main_queue(), ^{ NSData * data=[manager contentsAtPath:@"/Users/jredu/Desktop/tt.png"]; UIImage * image=[[UIImage alloc ]initWithData:data]; _imageView.image=image; UIAlertView * alert=[[UIAlertView alloc] initWithTitle:nil message:@"下載完成" delegate:self cancelButtonTitle:@"OK" otherButtonTitles: nil]; [alert show]; }) ; } - (void)URLSession:(NSURLSession *)session downloadTask:(NSURLSessionDownloadTask *)downloadTask didWriteData:(int64_t)bytesWritten totalBytesWritten:(int64_t)totalBytesWritten totalBytesExpectedToWrite:(int64_t)totalBytesExpectedToWrite{ CGFloat progress=(totalBytesWritten*1.0)/totalBytesExpectedToWrite; dispatch_async(dispatch_get_main_queue(), ^{ _pro.progress=progress; }) ; }

 

生活不易,碼農辛苦
如果您覺得本網站對您的學習有所幫助,可以手機掃描二維碼進行捐贈
程序員人生
------分隔線----------------------------
分享到:
------分隔線----------------------------
關閉
程序員人生
主站蜘蛛池模板: 欧美专区在线视频 | 九九精品免费观看在线 | 久久观看视频 | 国产免费人人看大香伊 | 久久精品二区 | 国产 福利 在线 | 欧美极品jiizzhd欧美 | 一级毛片在线观看免费 | 精品欧美一区二区在线看片 | 欧美在线亚洲国产免m观看 欧美在线一二三 | 国产一级做a爰片... | 国产日韩亚洲欧洲一区二区三区 | 欧美一区二区三区视频 | 免费人成网ww44kk44 | 精品一区二区三区免费观看 | 午夜dj高清免费观看视频www | 国产日韩精品一区二区在线观看播放 | 国产色综合一区二区三区 | www羞羞动漫网在线观看 | 欧美日本一二三区 | 羞羞视频免费观看网站 | 一区二区中文字幕在线观看 | 性欧美video 性欧美videofreel另类 | 亚洲精品视频在线观看视频 | 欧美精品一区二区在线观看 | 亚洲人成免费 | 黄色免费网址大全 | 欧洲精品一区二区 | 国产精品二区三区 | 一级日本特黄毛片视频 | 国产精品9999久久久久 | 亚洲精品图 | 成 人 免费观看网站 | 亚洲视频大全 | 午夜精品久久久久久久第一页 | 超清中文乱码精品字幕在线观看 | 亚洲精国产一区二区三区 | 亚洲视频二 | 久久久久久久综合 | 亚洲色图 欧美 | 亚洲黄色片网站 |