★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★
➤微信公衆號:山青詠芝(shanqingyongzhi)
➤博客園地址:山青詠芝(https://www.cnblogs.com/strengthen/)
➤GitHub地址:https://github.com/strengthen/LeetCode
➤原文地址:http://www.javashuo.com/article/p-abesbueq-kx.html
➤若是連接不是山青詠芝的博客園地址,則多是爬取做者的文章。
➤原文已修改更新!強烈建議點擊原文地址閱讀!支持做者!支持原創!
★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★html
目錄:[Swift]通天遁地Swiftios
本文將演示另一種檢測網絡狀態的方法。git
首先確保在項目中已經安裝了所需的第三方庫。github
點擊【Podfile】,查看安裝配置文件。swift
1 platform :ios, '12.0' 2 use_frameworks! 3 4 target 'DemoApp' do 5 source 'https://github.com/CocoaPods/Specs.git' 6 pod 'ReachabilitySwift' 7 end
根據配置文件中的相關配置,安裝第三方庫。微信
而後點擊打開【DemoApp.xcworkspace】項目文件。網絡
在項目導航區,打開視圖控制器的代碼文件【ViewController.swift】閉包
1 import UIKit 2 //在當前的類文件中,引入已經安裝的第三方類庫 3 import ReachabilitySwift 4 5 class ViewController: UIViewController { 6 7 override func viewDidLoad() { 8 super.viewDidLoad() 9 // Do any additional setup after loading the view, typically from a nib. 10 //經過閉包的方式檢測網絡的鏈接狀態 11 exampleClosures() 12 13 //經過通知的方式,進行網絡狀態的檢測 14 exampleNotifications() 15 } 16 17 //添加一個方法,經過閉包的方式檢測網絡的鏈接狀態 18 func exampleClosures() 19 { 20 //初始化一個網絡可訪問性檢測對象 21 let reachability = Reachability()! 22 23 //調用狀態檢測方式,並在閉包語句中, 24 //處理對網絡鏈接狀態檢測成功的結果。 25 reachability.whenReachable = { 26 reachability in 27 //返回主線程,根據檢測的狀態,執行不一樣的動做 28 DispatchQueue.main.async 29 { 30 //判斷是否經過無線局域網能夠訪問網絡 31 if reachability.isReachableViaWiFi 32 { 33 //輸出經過無線局域網能夠訪問網絡 34 print("---Reachable via WiFi") 35 } 36 else 37 { 38 //網絡是經過蜂窩方式訪問 39 print("---Reachable via Cellular") 40 } 41 //調用中止檢測的方法,中止對網絡狀態的檢測 42 reachability.stopNotifier() 43 } 44 } 45 //處理網絡鏈接不成功的狀況 46 reachability.whenUnreachable = 47 { 48 reachability in 49 //返回主線程,根據檢測的狀態,執行不一樣的動做 50 DispatchQueue.main.async 51 { 52 //當網絡鏈接不成功時, 53 //輸出失敗的日誌信息 54 print("---Not reachable") 55 //調用中止檢測的方法,中止對網絡狀態的檢測 56 reachability.stopNotifier() 57 } 58 } 59 60 //添加一個異常捕捉語句 61 do 62 { 63 //開始對網絡狀態的檢測 64 try reachability.startNotifier() 65 } 66 catch 67 { 68 print("---Unable to start notifier") 69 } 70 } 71 72 //添加一個方法,經過通知的方式,進行網絡狀態的檢測 73 func exampleNotifications() 74 { 75 //初始化一個網絡可訪問性檢測對象 76 let reachability = Reachability()! 77 78 //經過通知中心,添加一個觀察者 79 NotificationCenter.default.addObserver(self, 80 selector: #selector(self.reachabilityChanged), 81 name: ReachabilityChangedNotification, 82 object: reachability) 83 84 //添加一個異常捕捉語句 85 do 86 { 87 //開始對網絡狀態的檢測 88 try reachability.startNotifier() 89 } 90 catch 91 { 92 print("---could not start reachability notifier") 93 } 94 } 95 96 //添加一個方法,用來響應通知事件 97 func reachabilityChanged(note: NSNotification) 98 { 99 //當有通知返回時,得到通知的結果 100 let reachability = note.object as! Reachability 101 102 //根據網絡鏈接狀態,做出相應的處理 103 if reachability.isReachable 104 { 105 //判斷是否經過無線局域網能夠訪問網絡 106 if reachability.isReachableViaWiFi 107 { 108 //輸出經過無線局域網能夠訪問網絡 109 print("---Reachable via WiFi") 110 } 111 else 112 { 113 //網絡是經過蜂窩方式訪問 114 print("---Reachable via Cellular") 115 } 116 } 117 else 118 { 119 //當網絡沒法鏈接時,在控制檯輸出相應日誌 120 print("---Network not reachable") 121 } 122 //調用中止檢測的方法,中止對網絡狀態的檢測 123 reachability.stopNotifier() 124 125 NotificationCenter.default.removeObserver(self, 126 name: ReachabilityChangedNotification, 127 object: reachability) 128 } 129 130 override func didReceiveMemoryWarning() { 131 super.didReceiveMemoryWarning() 132 // Dispose of any resources that can be recreated. 133 } 134 }