情况介绍
现在有一个iOS Swift语言开发的app,主要功能是在app启动后加载一个远程网页,所有业务功能都在该网页内操作,app只是一个壳子。
第三方库
我使用https://github.com/ashleymills/Reachability.swift.git来处理。
问题描述
iOS 的机制是:app安装后、首次运行的时候,会弹窗询问用户是否启用网络访问的权限。
我期望在用户通过网络授权后(不论是蜂窝网络还是WIFI),才开始后续的webview的加载。但现在是app刚启动,还未等用户授权网络访问,就加载webview,导致无法打开网页。
我想使用Reachability库来解决这个问题,但是无论如何都无法进入whenReachable和whenUnreachable回调里。
麻烦请教大家,是什么原因导致的?我该如何修改?
代码结构
import Reachability
class ViewController: UIViewController {
...
override func viewDidLoad() {
super.viewDidLoad()
// Do any additional setup after loading the view.
// 网络检测 开始
let reachability = try! Reachability()
reachability.whenReachable = { reachability in
if reachability.connection == .wifi {
print("Reachable via WiFi")
} else {
print("Reachable via Cellular")
}
}
reachability.whenUnreachable = { _ in
print("Not reachable")
}
do {
try reachability.startNotifier()
} catch {
print("Unable to start notifier")
}
// 网络检测 结束
// 加载html页面
let request = URLRequest(url: url)
self.webView.load(request)
}
你需要在UIApplicationDelegate中监听网络状态的变化,使用 let monitor = NWPathMonitor()
monitor.pathUpdateHandler = { path in
}
获取网络状态后,发出通知,在你需要刷新的页面接受通知。通知到了,刷新页面