天天看點

2.檢查網絡狀态

  當應用程式需要通路網絡時,它首先應該檢查裝置的網絡狀态,确認裝置的網絡環境及連接配接情況,并針對這些情況提醒使用者做出相應的處理。最好能監聽裝置的網絡狀态的改變,當裝置網絡狀态連接配接、斷開時,程式也應該有相應的處理。

  工欲善其事必先利器,在檢查裝置的網絡狀态前,我們要先實作兩個步驟:

下載下傳,添加Reachability類。

2.檢查網絡狀态

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

     添加方法:

1)   選中項目名稱

2)選中TARGETS

3)選中Build Phases

4)在Link Binary With Libraries中添加。

2.檢查網絡狀态

  

  将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:事件處理方法。

2.檢查網絡狀态

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

  核心實作代碼:

2.檢查網絡狀态
2.檢查網絡狀态

  上面程式首先調用了Reachability類的reachabilityWithHostName:類方法來擷取Reachability對象,然後調用該對象的currentReachabilityStatus方法來擷取通路指定站點的方式,該方法傳回NetworkStatus枚舉值,該枚舉值有如下3個:

  上面程式對Reachability的currentReachabilityStatus方法傳回值進行判斷,這樣即可擷取該應用通路網絡的狀态和方式。

  編譯、運作該程式,如對www.cnblogs.com進行“測試”,效果如下圖。

2.檢查網絡狀态

  如果通路的站點本身不存在,即時裝置的網絡處于連接配接狀态,Reachability對象的currentReachabilityStatus方法也将傳回NotReachable。

  如果程式僅需要測試裝置的WiFi或3G/4G網絡是否連接配接,則可先調用Reachability類的reachabilityForLocalWiFi或reachabilityForInternetConnection類方法擷取Reachability對象,然後調用該Reachability對象的currentReachabilityStatus方法擷取網絡連接配接狀态,如果網絡連接配接狀态傳回NotReachable,則表明這種類型的網絡暫未連接配接。

  除了直接檢測網絡連接配接狀态之外,有時候程式還需要監聽網絡狀态的改變。當網絡斷開連接配接時,提醒使用者,網絡連接配接已經斷開,應用可能需要暫停;當網絡重新連接配接時,再次提醒使用者,應用可以繼續運作。程式擷取Reachability對象之後,調用Reachability對象的startNotifier方法即可開啟該對象的被監聽狀态——當Reachability的連接配接狀态發生改變時,該對象将會發送一個kReachabilityChangedNotification通知給預設的通知中心,是以程式隻要使用預設的通知中心監聽該通知即可。

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

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

2.檢查網絡狀态
2.檢查網絡狀态

   reachabilityChanged:會判斷該Reachability對象的網絡連接配接狀态,當該對象的網絡連接配接狀态處于NotReachable時,程式會使用UIAlertView進行提醒。

本文轉自夏雪冬日部落格園部落格,原文連結:http://www.cnblogs.com/heyonggang/p/3666825.html,如需轉載請自行聯系原作者

繼續閱讀