[Xcode 實際操做]8、網絡與多線程-(1)使用Reachability類庫檢測網絡的鏈接狀態

目錄:[Swift]Xcode實際操做html

本文將演示如何使用Reachability網絡狀態檢測庫,檢測設備的網絡鏈接狀態。git

須要下載一個開源的類庫:【ashleymills/Reachability.swift】github

這是一個用來檢測設備網絡狀態的庫。swift

支持自動引用計數,而且使用閉包的方式,來通知網絡狀態的變化。網絡

【Clone or download】下載類庫。閉包

將【Sources】->【Reachability.swift】文件拖入到項目中,只須要添加這個文件便可。async

->【Finish】將文件導入到項目中。ide

在項目導航區,打開視圖控制器的代碼文件【ViewController.swift】post

 1 import UIKit
 2 
 3 class ViewController: UIViewController {
 4     
 5      //給當前的視圖控制器添加一個網絡監測屬性
 6     var reachability : Reachability!
 7     override func viewDidLoad() {
 8         super.viewDidLoad()
 9         // Do any additional setup after loading the view, typically from a nib.
10         
11         //對網絡監測屬性進行初始化
12         reachability = Reachability()
13         
14         //調用網絡監測方法,判斷當前設備的網絡環境
15         reachability.whenReachable = { reachability in
16             //得到網絡狀態以後返回主線程進行響應
17             DispatchQueue.main.async
18             {
19                 //若是當前的網絡環境,是經過無線網絡鏈接
20                 if reachability.connection == .wifi
21                 {
22                     //則在控制檯打印輸出日誌
23                     print("Reachable via WiFi")
24                 }
25                 else
26                 {
27                     //若是當前的網絡環境是蜂窩移動網絡
28                     //則在控制檯打印輸出相關日誌
29                     print("Reachable via Cellular")
30                 }
31             }
32         }
33 
34         //處理網絡沒法鏈接的狀況。
35         reachability.whenUnreachable = { reachability in
36             //若是設備無網絡鏈接
37             DispatchQueue.main.async
38             {
39                 //則在控制檯打印輸出相關日誌
40                 print("Not reachable")
41             }
42         }
43         
44         //建立一個異常捕捉語句
45         do
46         {
47             //調用網絡檢測對象的開始檢測方法,
48             //開始檢測網絡的狀態
49             try reachability.startNotifier()
50         }
51         catch
52         {
53             print("Unable to start notifier")
54         }
55     }
56     
57     //在視圖控制器類的析構方法中
58     deinit
59     {
60         //中止網絡狀態的檢測
61         reachability.stopNotifier()
62     }
63 
64     override func didReceiveMemoryWarning() {
65         super.didReceiveMemoryWarning()
66         // Dispose of any resources that can be recreated.
67     }
68 }
相關文章
相關標籤/搜索