返回 导航

Swift

hangge.com

Swift - 异步编程库PromiseKit使用详解9(SCNetworkReachability的扩展)

作者:hangge | 2018-12-21 08:10
    有时我们需要在程序中判断当前设的备网络是否可用,又或者希望当设备网络从未连接变成连接时,能自动进行一些业务操作(比如上传数据)。那么就需要借助 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 不仅可以测试网络是否连接,还支持网络类型的检测(3GWifi),具体用法可以参考我之前写的文章:
评论

全部评论(0)

回到顶部