【问题标题】:Constantly check for internet connectivity in webview for IOS在 IOS 的 webview 中不断检查互联网连接
【发布时间】: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


【解决方案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()

【讨论】:

  • 是的,我已经发现了这一点并选择了可达性。效果很好
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-12-29
  • 1970-01-01
  • 2015-08-20
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多