【发布时间】:2023-03-30 05:25:01
【问题描述】:
我已经在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)。
我尝试了几种不同的功能,但没有一个可以工作。当我可以使用现有代码的用户设备上的网络连接发生变化时,是否会触发事件?
【问题讨论】:
-
如果您能够使用 3rd 方框架,这里有一个选项。 github.com/ashleymills/Reachability.swift
-
我已经有了类似于可达性和工作的东西,我要问的是我需要一个不断检查互联网连接的东西。因此,如果他们当前正在使用我的应用并且设备失去连接,则切换到非互联网页面。
-
那个框架有一个你可以配置的观察者,这就是我建议它的原因。您只需要配置观察者以及如果您失去连接该怎么办。
-
我爱你....现在要切换到那个。生病更新我的进展。我不知道观察者。谢谢!
-
谢谢@Adrian。使用 Reachability 完成所有工作!
标签: ios swift webview uiviewcontroller