Как обнаружить изменения в интернет-соединении на iOS, стиль делегата?

Мне нужна функция для запуска только тогда, когда система обнаруживает, что нет подключения к Интернету, а затем еще одна функция для запуска, когда система обнаруживает подключение к Интернету.

Я думаю о чем-то вроде этого:

func onInternetConnection() {
    //Enable actions
}

func onInternetDisconnection() {
    //Disable actions, alert user
}

Мне также понадобится способ определить, когда система переподключается, чтобы я мог сообщить пользователю, что она переподключается, как в Facebook Messenger.

Как я могу это сделать?

Я использую Moya/Alamofire для моего сетевого уровня.

2 ответа

Решение

Это работает в случае Alamofire

import Alamofire

// In your view did load or in app delegate do like this
let reachabilityManager = NetworkReachabilityManager()
reachabilityManager.listener = { status in

  switch status {

  case .notReachable:
    print("The network is not reachable")
    self.onInternetDisconnection()

  case .unknown :
    print("It is unknown whether the network is reachable")
    self.onInternetDisconnection() // not sure what to do for this case

  case .reachable(.ethernetOrWiFi):
    print("The network is reachable over the WiFi connection")
    self.onInternetConnection()

  case .reachable(.wwan):
    print("The network is reachable over the WWAN connection")
    self.onInternetConnection()

  }
}

Alamofire и Rechability являются библиотекой и имеют некоторые функции для проверки интернет-соединения. Вы можете использовать один из этого.

Другие вопросы по тегам