iOSapp如何使用Reachability解决app安装后首次运行网络授权的问题?-灵析社区

一一在debug

#### 情况介绍 现在有一个iOS Swift语言开发的app,主要功能是在app启动后加载一个远程网页,所有业务功能都在该网页内操作,app只是一个壳子。 #### 第三方库 我使用[https://github.com/ashleymills/Reachability.swift.git](https://link.segmentfault.com/?enc=QHeX4lw%2FbP5FPOpbB1DGDw%3D%3D.3hkv12ew9HkmFcpP3wwCCK7EP3ZLxxkJjzYUwFVVjRlyg01yKF2p79OE4HOJzwrSokIkbjwFHDZmAxV4lVjWfA%3D%3D)来处理。 #### 问题描述 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) }

阅读量:160

点赞量:0

问AI
你需要在UIApplicationDelegate中监听网络状态的变化,使用 let monitor = NWPathMonitor() monitor.pathUpdateHandler = { path in if path.status == .satisfied { print("Yay! We have internet!") //发出通知 } } 获取网络状态后,发出通知,在你需要刷新的页面接受通知。通知到了,刷新页面