Как проверить, когда сеть недоступна в iOS 13? - PullRequest
0 голосов
/ 18 февраля 2020

Я добавил несколько логик c для работы с сетью, которая недоступна, но мне трудно запустить обработчик ошибок. Я использую URLError networkUnavailableReason это правильно?

DataService.shared.GetMyData(completion: {(result) in
    DispatchQueue.main.async {
        switch result {
            case .success(let data):


                break
            case .failure(let error):
                print(error)
                if let error = error as? URLError, error.networkUnavailableReason == .constrained  {

                    self.showAlert()
                }

                break;
        }
    }
})

1 Ответ

1 голос
/ 18 февраля 2020

Вы можете использовать NWPathMonitor , который является сетевым монитором, чтобы проверить, доступна ли сеть. Я использовал один из них, создав для него структуру:

// make sure to import Network in your file when you do this
struct NetworkMonitor {
    static let monitor = NWPathMonitor()
    static var connection = true
}

Затем использовал его так, где бы вы ни хотели начать мониторинг:

NetworkMonitor.monitor.pathUpdateHandler = { path in
               if path.status == .satisfied {
                    print("connection successful")
                    NetworkMonitor.connection = true
                    // then respond to successful connection here, I used a notification and this connection bool
              } else {
                    print("no connection")
                    NetworkMonitor.connection = false
                    // respond to lack of connection here
               }
          }

          let queue = DispatchQueue(label: "Monitor")
          NetworkMonitor.monitor.start(queue: queue)
...