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

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

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

func onInternetConnection() {
    //Enable actions
}

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

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

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

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


person Berry    schedule 09.05.2017    source источник
comment
Alamofire включает сетевую доступность, читайте об этом здесь, он использует блокировку, вроде как лучше, чем делегировать   -  person Tj3n    schedule 09.05.2017
comment
Взгляните на ответ здесь   -  person Devika S    schedule 09.05.2017
comment
Проверьте также эту библиотеку, она может инициировать закрытие, когда статус вашего меняется подключение к интернету.   -  person Toldy    schedule 09.05.2017


Ответы (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()

  }
}
person Inder Kumar Rathore    schedule 09.05.2017
comment
Куда я могу поместить это, чтобы сохранить reachabilityManager? - person Berry; 09.05.2017
comment
Вы можете сделать его переменной экземпляра делегата приложения или какого-либо синглтона. - person Inder Kumar Rathore; 09.05.2017
comment
Есть ли способ сделать это без Alamofire и изначально? - person toast; 22.07.2017
comment
@toast вы можете скачать доступный код яблок. Просто найдите доступность Apple, и вы можете найти их образец на сайте разработчика. - person Inder Kumar Rathore; 22.07.2017

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

person Rohan Dave    schedule 09.05.2017