一区二区三区在线-一区二区三区亚洲视频-一区二区三区亚洲-一区二区三区午夜-一区二区三区四区在线视频-一区二区三区四区在线免费观看

服務器之家:專注于服務器技術及軟件下載分享
分類導航

PHP教程|ASP.NET教程|Java教程|ASP教程|編程技術|正則表達式|C/C++|IOS|C#|Swift|Android|VB|R語言|JavaScript|易語言|vb.net|

服務器之家 - 編程語言 - IOS - iOS利用AFNetworking3.0——實現文件斷點下載

iOS利用AFNetworking3.0——實現文件斷點下載

2021-03-03 15:58清澈Saup IOS

這篇文章主要介紹了iOS利用AFNetworking3.0——實現文件斷點下載,具有一定的參考價值,有興趣的可以了解一下。

0.導入框架準備工作  

1. 將afnetworking3.0+框架程序拖拽進項目

2. 或使用cocopod 導入afnetworking3.0+

3.  引入

?
1
#import "afnetworking.h"

iOS利用AFNetworking3.0——實現文件斷點下載

iOS利用AFNetworking3.0——實現文件斷點下載

1.ui準備工作  

a. 定義一個全局的 nsurlsessiondownloadtask:下載管理句柄

由其負責所有的網絡操作請求

?
1
2
3
4
5
6
7
8
9
@interface viewcontroller ()
 
{
 
 // 下載句柄
 
 nsurlsessiondownloadtask *_downloadtask;
 
}

.h文件

?
1
2
3
4
5
6
7
8
9
10
11
12
13
#import <uikit/uikit.h>
 
@interface viewcontroller : uiviewcontroller
 
// 下載文件顯示
 
@property (weak, nonatomic) iboutlet uiimageview *imageview;
 
// 下載進度條顯示
 
@property (weak, nonatomic) iboutlet uiprogressview *progressview;
 
@end

.m文件

?
1
2
3
4
5
6
7
8
9
@interface viewcontroller ()
 
{
 
 // 下載句柄
 
 nsurlsessiondownloadtask *_downloadtask;
 
}

2.利用afn實現文件下載操作細節  

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
- (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.關于暫停和繼續  

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
- (ibaction)stopdownloadbtnclick:(id)sender {
 
 //暫停下載
 
 [_downloadtask suspend];
 
}
 
- (ibaction)startdownloadbtnclick:(id)sender {
 
 //開始下載
 
 [_downloadtask resume];
 
}

4.檢測網絡狀態--優化用戶體驗  

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
- (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];
 
 
 
}

源碼:afnetworking3.0.rar

以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支持服務器之家。

原文鏈接:http://www.cnblogs.com/qingche/p/5362592.html

延伸 · 閱讀

精彩推薦
  • IOSiOS中滑動控制屏幕亮度和系統音量(附加AVAudioPlayer基本用法和Masonry簡單使用)

    iOS中滑動控制屏幕亮度和系統音量(附加AVAudioPlayer基本用法和

    這篇文章主要介紹了iOS中滑動控制屏幕亮度和系統音量(附加AVAudioPlayer基本用法和Masonry簡單使用)的相關資料,需要的朋友可以參考下...

    CodingFire13652021-02-26
  • IOSiOS開發之視圖切換

    iOS開發之視圖切換

    在iOS開發中視圖的切換是很頻繁的,獨立的視圖應用在實際開發過程中并不常見,除非你的應用足夠簡單。在iOS開發中常用的視圖切換有三種,今天我們將...

    執著丶執念5282021-01-16
  • IOSiOS自定義UICollectionViewFlowLayout實現圖片瀏覽效果

    iOS自定義UICollectionViewFlowLayout實現圖片瀏覽效果

    這篇文章主要介紹了iOS自定義UICollectionViewFlowLayout實現圖片瀏覽效果的相關資料,需要的朋友可以參考下...

    jiangamh8882021-01-11
  • IOSiOS中MD5加密算法的介紹和使用

    iOS中MD5加密算法的介紹和使用

    MD5加密是最常用的加密方法之一,是從一段字符串中通過相應特征生成一段32位的數字字母混合碼。對輸入信息生成唯一的128位散列值(32個字符)。這篇文...

    LYSNote5432021-02-04
  • IOS詳解iOS中多個網絡請求的同步問題總結

    詳解iOS中多個網絡請求的同步問題總結

    這篇文章主要介紹了詳解iOS中多個網絡請求的同步問題總結,小編覺得挺不錯的,現在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧...

    liang199111312021-03-15
  • IOSiOS開發技巧之狀態欄字體顏色的設置方法

    iOS開發技巧之狀態欄字體顏色的設置方法

    有時候我們需要根據不同的背景修改狀態欄字體的顏色,下面這篇文章主要給大家介紹了關于iOS開發技巧之狀態欄字體顏色的設置方法,文中通過示例代碼...

    夢想家-mxj8922021-05-10
  • IOSiOS中UILabel實現長按復制功能實例代碼

    iOS中UILabel實現長按復制功能實例代碼

    在iOS開發過程中,有時候會用到UILabel展示的內容,那么就設計到點擊UILabel復制它上面展示的內容的功能,也就是Label長按復制功能,下面這篇文章主要給大...

    devilx12792021-04-02
  • IOSiOS實現控制屏幕常亮不變暗的方法示例

    iOS實現控制屏幕常亮不變暗的方法示例

    最近在工作中遇到了要將iOS屏幕保持常亮的需求,所以下面這篇文章主要給大家介紹了關于利用iOS如何實現控制屏幕常亮不變暗的方法,文中給出了詳細的...

    隨風13332021-04-02
主站蜘蛛池模板: 九九国产在线观看 | 香蕉视频久久 | 免费看www | b站免费网站入口 | 91女神在线观看 | 国产精品视频一区二区三区不卡 | 涩涩屋在线播放 | 国产精品日韩欧美在线 | 亚洲欧美另类第一页 | 亚洲精品在线播放 | 亚洲精品91大神在线观看 | 狠狠综合久久综合网站 | 成人观看免费大片在线观看 | 国产在线观看网站 | 国色天香社区视频在线观看免费完整版 | 无人在线视频高清免费播放 | 免费观看欧美成人禁片 | 嫩草精品 | 亚洲天堂2016 | 国产成人综合亚洲亚洲欧美 | 欧美2区 | 亚洲天堂成人在线 | 胸大的姑娘中文字幕视频 | 秋霞宅宅236理论片 秋霞一级黄色片 | 小早川怜子在线播放精品 | 四虎精品成人免费影视 | 奇米影视中文字幕 | 国产成人精品视频午夜 | 国产91对白在线观看 | 国产主播精品在线 | 欧美久久久久久 | 91aaa免费免费国产在线观看 | 憋尿调教绝望之岛 | 国产精品视频二区不卡 | 骚虎网站在线观看 | 国产v视频 | 国产视频a区 | 午夜国产在线观看 | 欧美ⅹxxxhd3d | 天堂网站天堂小说 | 天堂色 |