亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 學院 > 開發設計 > 正文

2.檢查網絡狀態

2019-11-14 20:32:45
字體:
來源:轉載
供稿:網友

 

  當應用程序需要訪問網絡時,它首先應該檢查設備的網絡狀態,確認設備的網絡環境及連接情況,并針對這些情況提醒用戶做出相應的處理。最好能監聽設備的網絡狀態的改變,當設備網絡狀態連接、斷開時,程序也應該有相應的處理。

  工欲善其事必先利器,在檢查設備的網絡狀態前,我們要先實現兩個步驟:

  1. 下載,添加Reachability類。

    下載Reachability.zip壓縮包,最新的版本為V3.5,解壓該壓縮包會得到一個Xcode項目,其實關鍵是得到改項目的Reachability.h和 Reachability.m文件,并把它們添加到項目中。

      2. 為項目添加SystemConfiguration.framework框架。

     添加方法:

  • 1)   選中項目名稱
  • 2)選中TARGETS
  • 3)選中Build Phases
  • 4)在Link Binary With Libraries中添加。

  

  將Reachability.h和 Reachability.m文件添加到項目中。

  注意:如果Reachability不是3.0以上的版本,而是Reachability 2.x版本,它是不支持ARC的。本項目已經啟用了ARC,早期版本的Reachability類并不支持ARC,因此需要手動設置該類禁用ARC。

  打開Main.storyboard界面設計文件,向該文件中添加1個UILabel,1個UITextFieldhe 3個UIButton,如下圖所示(^_^不好意思,最下面2個UILabel是打廣告的)。為了在程序中訪問界面上的文本框,將文本框綁定到siteField IBOutlet屬性。為了讓程序能相應界面上3個按鈕的點擊事件,將“測試”按鈕的“Touch UP Inside”事件綁定testNetStatus:事件處理方法,為“測試WIFI”按鈕的“Touch UP Inside”事件綁定testWifi:事件處理方法,為“測試3G/4G”按鈕的“Touch UP Inside”事件綁定testInternet:事件處理方法。

  

 

  接下來編輯該示例的視圖控制器類,該視圖控制器類的實現部分主要依靠Reachability類來檢測網絡狀態。

  核心實現代碼:

 

 1 //  ViewController.m 2 //  NetWorkDemo 3 // 4 //  Copyright (c) 2014年 MiracleHe. All rights reserved. 5 // 6  7 #import "ViewController.h" 8 #import "Reachability.h" 9 10 @interface ViewController ()11 12 @end13 14 @implementation ViewController15 @synthesize siteField;16 17 - (void)viewDidLoad18 {19     [super viewDidLoad];20     // Do any additional setup after loading the view, typically from a nib.21 }22 - (IBAction)testNetStatus:(id)sender {23     NSString *site = self.siteField.text;24     Reachability *reach = [Reachability reachabilityWithHostName: site];25     switch ([reach currentReachabilityStatus]) {26         case NotReachable:27             [self showAlert:[NSString stringWithFormat:@"不能訪問%@", site]];28             break;29         30         case ReachableViaWWAN:31             [self showAlert:[NSString stringWithFormat:@"使用3G/4G網絡訪問%@", site]];32             break;33             34         case ReachableViaWiFi:35             [self showAlert:[NSString stringWithFormat:@"使用Wifi網絡訪問%@", site]];36             break;37     }38     39 }40 41 42 - (IBAction)testWifi:(id)sender {43     if ([[Reachability reachabilityForLocalWiFi] currentReachabilityStatus] != NotReachable) {44         [self showAlert:@"wifi網絡已經連接"];45     }else{46         [self showAlert:@"wifi網絡不可用。"];47     }48 }49 50 51 - (IBAction)testInternet:(id)sender {52     if ([[Reachability reachabilityForInternetConnection] currentReachabilityStatus] != NotReachable) {53         [self showAlert:@"3G/4G網絡已經連接"];54     }else{55         [self showAlert:@"3G/4G網絡不可用"];56     }57 }58 59 -(void) showAlert:(NSString*) msg60 {61     UIAlertView *alert = [[UIAlertView alloc] initWithTitle:@"網絡狀態" message:msg delegate:nil cancelButtonTitle:@"確定" otherButtonTitles:nil];62     [alert show];63     64 }65 66 -(BOOL)textFieldShouldReturn:(UITextField *)textField67 {68     [siteField resignFirstResponder];69     return YES;70     71 }72 73 - (void)didReceiveMemoryWarning74 {75     [super didReceiveMemoryWarning];76     // Dispose of any resources that can be recreated.77 }78 79 @end

 

  上面程序首先調用了Reachability類的reachabilityWithHostName:類方法來獲取Reachability對象,然后調用該對象的currentReachabilityStatus方法來獲取訪問指定站點的方式,該方法返回NetworkStatus枚舉值,該枚舉值有如下3個:

typedef enum{    NotReachable = 0,     //無連接    ReachableViaWiFi,     //使用3G/4G網絡    ReachableViaWWAN      //使用WiFi網絡}NetworkStatus;

  上面程序對Reachability的currentReachabilityStatus方法返回值進行判斷,這樣即可獲取該應用訪問網絡的狀態和方式。

  編譯、運行該程序,如對www.49028c.com進行“測試”,效果如下圖。

  如果訪問的站點本身不存在,即時設備的網絡處于連接狀態,Reachability對象的currentReachabilityStatus方法也將返回NotReachable。

  如果程序僅需要測試設備的WiFi或3G/4G網絡是否連接,則可先調用Reachability類的reachabilityForLocalWiFi或reachabilityForInternetConnection類方法獲取Reachability對象,然后調用該Reachability對象的currentReachabilityStatus方法獲取網絡連接狀態,如果網絡連接狀態返回NotReachable,則表明這種類型的網絡暫未連接。

 

  除了直接檢測網絡連接狀態之外,有時候程序還需要監聽網絡狀態的改變。當網絡斷開連接時,提醒用戶,網絡連接已經斷開,應用可能需要暫停;當網絡重新連接時,再次提醒用戶,應用可以繼續運行。程序獲取Reachability對象之后,調用Reachability對象的startNotifier方法即可開啟該對象的被監聽狀態——當Reachability的連接狀態發生改變時,該對象將會發送一個kReachabilityChangedNotification通知給默認的通知中心,因此程序只要使用默認的通知中心監聽該通知即可。

  為了監聽網絡狀態的改變,在應用程序委托類(AppDelegate.m)的application: didFinishLaunchingWithOptions:方法中增加如下代碼:

    //使用通知中心監聽kReachabilityChangedNotification通知    [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(reachabilityChanged:) name:kReachabilityChangedNotification object:nil];    //獲取訪問指定站點的Reachability對象    Reachability *reach = [Reachability reachabilityWithHostName:@"www.49028c.com"];    //讓Reachability對象開啟被監聽狀態    [reach startNotifier];

  上面的代碼使用默認的通知中心檢測kReachabilityChangedNotification通知,這意味著當Reachability的連接狀態發生改變時,默認的通知中心就會收到該通知,從而觸發應用程序委托類的reachabilityChanged:方法,還需要在應用程序委托類中定義如下方法:

- (void) reachabilityChanged:(NSNotification*) note{    //通過通知對象獲取被監聽的Reachability對象    Reachability *curReach = [note object];    //獲取Reachability對象的網絡狀態    NetworkStatus status = [curReach currentReachabilityStatus];    if (status == NotReachable) {        UIAlertView *alert = [[UIAlertView alloc] initWithTitle:@"提醒" message:@"不能訪問www.49028c.com" delegate:nil cancelButtonTitle:@"YES" otherButtonTitles: nil];        [alert show];    }}

   reachabilityChanged:會判斷該Reachability對象的網絡連接狀態,當該對象的網絡連接狀態處于NotReachable時,程序會使用UIAlertView進行提醒?!?/span>

   希望上面的總結能對正在學習iOS開發的小伙伴有一點點幫助,假如覺得還不錯,煩請小伙伴不要忘記右下角的點“推薦”哦!

 


發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
久久亚洲精品一区| 亚洲精品国产美女| 日韩在线激情视频| 精品福利一区二区| 欧美电影免费观看| 久久韩剧网电视剧| 69国产精品成人在线播放| 欧美午夜精品久久久久久久| 久久99久国产精品黄毛片入口| 亚洲人永久免费| 国产精品视频专区| 亚洲国产三级网| 少妇久久久久久| 午夜免费在线观看精品视频| 欧美日韩黄色大片| 亚洲欧美制服第一页| 国产精品久久一区| 欧美日韩美女在线| 日本在线观看天堂男亚洲| 国产一区二区三区精品久久久| 亚洲国产精品va在线看黑人动漫| 5278欧美一区二区三区| 欧美激情综合色| 久久伊人91精品综合网站| 久久综合国产精品台湾中文娱乐网| 亚洲2020天天堂在线观看| 国产精品久久久久久久久久久久久| 国产精品黄页免费高清在线观看| 亚洲va久久久噜噜噜久久天堂| 国产午夜精品理论片a级探花| 日韩hd视频在线观看| 久久男人av资源网站| 日韩最新中文字幕电影免费看| 日韩中文在线观看| 欧美激情按摩在线| 国产97色在线| 久久久国产精彩视频美女艺术照福利| xxxxx成人.com| 岛国精品视频在线播放| 九九九热精品免费视频观看网站| 亚洲精品自拍偷拍| 欧美成人精品不卡视频在线观看| 国产精品久久久久久亚洲影视| 国产免费一区视频观看免费| 亚洲第一中文字幕在线观看| 亚洲欧美在线一区二区| 欧美激情第三页| 色哟哟网站入口亚洲精品| 亚洲最大的av网站| 中文字幕无线精品亚洲乱码一区| 欧美性极品少妇精品网站| 欧美贵妇videos办公室| 精品露脸国产偷人在视频| 国产午夜一区二区| 亚洲精品国产综合区久久久久久久| 久久久久久久久久亚洲| 欧美一区二区三区……| 粉嫩老牛aⅴ一区二区三区| 久久精品99久久久香蕉| 国产91ⅴ在线精品免费观看| 久久精品在线播放| 中文字幕在线精品| 国产伊人精品在线| 亚洲aⅴ男人的天堂在线观看| 成人写真福利网| 色无极影院亚洲| 日韩精品高清在线观看| 欧美性受xxxx黑人猛交| 国产又爽又黄的激情精品视频| 欧美国产高跟鞋裸体秀xxxhd| 欧美黑人xxxⅹ高潮交| 国产这里只有精品| 久久精品视频在线播放| 成人性生交xxxxx网站| 一本一本久久a久久精品综合小说| 欧美日韩午夜激情| 2019中文在线观看| 欧美高清激情视频| 国产主播欧美精品| 国产精品久久久久久久久久| 亚洲精品白浆高清久久久久久| 17婷婷久久www| 日本成人黄色片| 国产欧美一区二区白浆黑人| 性色av香蕉一区二区| 欧美最近摘花xxxx摘花| 日韩免费av在线| 日韩中文字幕不卡视频| 欧美极品美女视频网站在线观看免费| 精品久久久一区二区| 亚洲国产91精品在线观看| 国产欧美日韩免费| 97久久精品在线| 全亚洲最色的网站在线观看| 中文国产成人精品久久一| 精品久久久久久久久国产字幕| 国产成人福利视频| 国产成人在线一区二区| 日韩精品高清在线观看| 欧美俄罗斯乱妇| 亚洲天堂视频在线观看| 综合激情国产一区| 少妇高潮久久久久久潘金莲| 欧美精品在线免费播放| 欧美成人黄色小视频| 久久99亚洲热视| 亚洲视频axxx| 国内精品小视频| 国产精品普通话| 91影院在线免费观看视频| 日韩欧美综合在线视频| 中文字幕日韩高清| 成人久久精品视频| 91国产中文字幕| 亚洲欧美资源在线| 亚洲香蕉伊综合在人在线视看| 成人激情视频免费在线| 日韩中文视频免费在线观看| 亚洲网站在线观看| 欧美国产高跟鞋裸体秀xxxhd| 91精品在线观看视频| 成人精品视频99在线观看免费| 久久亚洲精品一区二区| 亚洲激情视频在线| 88国产精品欧美一区二区三区| 成人激情免费在线| 日韩午夜在线视频| 欧美在线视频免费播放| 精品国产一区二区三区久久狼5月| 亚洲免费成人av电影| 日韩电影在线观看中文字幕| 国产情人节一区| 欧美大片在线看免费观看| 久久综合免费视频| 久色乳综合思思在线视频| 日韩高清电影免费观看完整| 国产专区欧美专区| 日韩精品免费电影| 国产成人a亚洲精品| 欧美日韩国产综合视频在线观看中文| 伊人久久五月天| 91国内精品久久| 国产在线观看精品一区二区三区| 国产伦精品一区二区三区精品视频| 成人久久久久久| 久久久中精品2020中文| 国产免费一区二区三区在线能观看| 国产激情999| 国产日韩欧美影视| 国产福利精品视频| 欧美成人免费全部观看天天性色| 国产丝袜一区视频在线观看| 亚洲福利视频免费观看| 疯狂做受xxxx高潮欧美日本| 欧美性高跟鞋xxxxhd| 一本色道久久综合狠狠躁篇怎么玩| 尤物yw午夜国产精品视频| 亚洲女人被黑人巨大进入al| 日韩国产高清视频在线| 欧美激情亚洲精品| 成人免费在线视频网站| 亚洲成人激情小说| 成人在线视频网| 久久视频在线直播|