Swift - 异步编程库PromiseKit使用详解9(SCNetworkReachability的扩展)
有时我们需要在程序中判断当前设的备网络是否可用,又或者希望当设备网络从未连接变成连接时,能自动进行一些业务操作(比如上传数据)。那么就需要借助 SystemConfiguration 框架中的 SCNetworkReachability 来实现。PromiseKit 同样也对其进行了扩展,方便我们使用。
十、SCNetworkReachability 的扩展
1,安装配置
(1)首先要安装 PromiseKit 库 ,具体步骤可以参考我之前的文章:
(2)接着安装 PromiseKit 的 SystemConfiguration 扩展库,从 GitHub 上下载最新的代码:
(3)将下载下来的源码包中 PMKSystemConfiguration.xcodeproj 拖拽至你的工程中

(4)工程 -> General -> Embedded Binaries 项,把 PMKSystemConfiguration.framework 添加进来。

(5)最后,还要把下载下来的 SystemConfiguration 扩展库 Sources 文件夹中的 SCNetworkReachability+Promise.swift 这个文件添加到我们项目中来。

2,使用样例
(1)效果图
- 首先我们将手机的飞行模式打开,然后再启动程序,此时界面上什么事情都没发生。
- 接着我们关闭飞行模式,一旦网络变成可用时,便会自动弹出一个提示框。


(2)样例代码
import UIKit import PromiseKit import SystemConfiguration class ViewController: UIViewController { override func viewDidLoad() { //如果当前网络可用,或者从不可用变为可用时,弹出提示框 _ = SCNetworkReachability.promise().done { UIAlertController.showAlert(message: "当前网络连接:可用", in: self) } } } extension UIAlertController { //在指定视图控制器上弹出普通消息提示框 static func showAlert(message: String, in viewController: UIViewController) { let alert = UIAlertController(title: nil, message: message, preferredStyle: .alert) alert.addAction(UIAlertAction(title: "确定", style: .cancel)) viewController.present(alert, animated: true) } }
附:其它第三方网络检测类推荐
(1)除了直接使用 SCNetworkReachability 来检测网络外,我们也可以使用其它一些第三方网络检测库。Reachability.swift 就是其中比较优秀的一个。(2)Reachability.swift 不仅可以测试网络是否连接,还支持网络类型的检测(3G、Wifi),具体用法可以参考我之前写的文章: