Постоянно проверяйте подключение к интернету в webview для IOS - PullRequest
0 голосов
/ 18 декабря 2018

У меня уже есть скрипт для проверки интернет-соединения в 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), когда соединение восстанавливалось.

Я пыталсянесколько разных функций, но ни одна из них не работает.Есть ли событие, которое запускается при изменении сетевого подключения на устройстве пользователя, когда я могу использовать свой существующий код?

1 Ответ

0 голосов
/ 18 декабря 2018

Я предлагаю использовать Достижимость

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()
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...