在IOS的webview中不断检查Internet连接

时间:2018-12-17 21:04:17

标签: ios swift webview uiviewcontroller

我已经在viewDidLoad中拥有了检查互联网连接的脚本,如下所示,效果很好。如果存在连接,则会加载url;否则,它将加载带有漂亮图片的本地html页面,告诉用户互联网已断开。

override func viewDidLoad() {
    super.viewDidLoad()

    let appDelegate = UIApplication.shared.delegate as! AppDelegate
    appDelegate.viewController = self

    webView.navigationDelegate = self
    ref = Database.database().reference()

    if CheckInternet.Connection() {

        let url = URL(string: "https://www.example.com/")
        let URLrequest = URLRequest(url: url!)
        self.webView.load(URLrequest)

    } else {

        let htmlpath = Bundle.main.path(forResource: "nointernet", ofType: "html")
        let url = URL(fileURLWithPath: htmlpath!)
        let request = URLRequest(url: url)
        self.webView.load(request)

    }

}

问题是,如果用户设备在使用我的应用程序时失去了互联网连接,则它会挂起。我希望能够在连接断开后立即自动将应用切换到本地html页面,并在连接恢复在线时切换回html(example.com)。

我尝试了几种不同的功能,但是没有一个起作用。当我可以使用现有代码的用户设备上的网络连接更改时,是否会触发事件?

1 个答案:

答案 0 :(得分:1)

我建议使用Reachability

1。通过Pod安装它:

use_frameworks!
pod 'ReachabilitySwift'

2。您的UIViewController中的变量声明

let reachability = Reachability()

3。添加观察者并启动观察者

// connected observer
reachability?.whenReachable = { reachability in
  // Connected to Internet
}

// disconnected observer
reachability?.whenUnreachable = { _ in
  // Not Connected to Internet
}
// start reachability observer
do {
  try reachability?.startNotifier()
} catch {
  print("Unable to start notifier")
}

4。在分解您的UIViewController之前,请停止观察者:

reachability?.stopNotifier()