我已经在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)。
我尝试了几种不同的功能,但是没有一个起作用。当我可以使用现有代码的用户设备上的网络连接更改时,是否会触发事件?
答案 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()