iOS swift 4 Добавить прослушиватель уведомлений о состоянии сетевого подключения из любого класса

Я использую ashleymills/Reachability.swift для проверки состояния сетевого подключения. Когда я использую его в определенном классе в методе viewWillAppear, он работает просто отлично. Но в настоящее время у меня более 40 классов, и я не думаю, что мне нужно реализовывать прослушиватель уведомлений в каждом из них. Итак, я пытался запустить его в методе AppDelegate application didFinishLaunchingWithOptions. Я пробовал для одного класса, например, если у меня есть класс с именем DashboardVC, я написал:

var reachability = Reachability()!
func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplicationLaunchOptionsKey: Any]?) -> Bool {
let vc = DashboardVC()
Notificationcenter.default.addObserver(vc, selector: #selector(reachabilityDidChange(notification:)), name: .reachabilityChanged, object: nil)
return true
}

И функция reachabilityDidChange(notification:):

func reachabilityDidChange(notification: Notification) {

let reachability1 = notification.object as! Reachability  
switch reachability1.connection {  
case .wifi:      
   print("Reachable via WiFi")  
case .cellular:      
   print("Reachable via Cellular")  
case .none:    
   print("Network not reachable")  }
}

Но это не работало, когда я включал/выключал интернет-соединение или переключался с Wi-Fi на сотовую сеть, когда DashboardVC был topmostViewController. Помогите мне, пожалуйста:

  1. Если есть способ достичь моей цели с помощью ashleymills/Reachability.swift
  2. Если есть способ добиться этого без ashleymills/Reachability.swift
  3. Если есть какой-либо другой способ отслеживать состояние сетевого подключения

С Уважением!


person Community    schedule 02.05.2018    source источник
comment
оформить заказ здесь stackoverflow.com/a/42710600/6898523   -  person MAhipal Singh    schedule 02.05.2018
comment
@MAhipalSingh Большое спасибо! Но где мне это реализовать, чтобы продолжать наблюдать за всеми классами?   -  person    schedule 02.05.2018
comment
вы можете создать глобальную функцию.   -  person MAhipal Singh    schedule 02.05.2018
comment
В этом случае ваш экземпляр DashboardVC будет уничтожен после возврата, поэтому нет никаких наблюдателей, которые подписались на ваш наблюдаемый объект.   -  person Vlad Khambir    schedule 02.05.2018
comment
Хорошо. Спасибо большое! @МАхипалСингх   -  person    schedule 02.05.2018
comment
@ В.Хамбир Это правда. Никогда об этом не думал. ???? Спасибо за это!   -  person    schedule 02.05.2018
comment
@MAhipalSingh, как добавить наблюдателя для контроллера представления из делегата приложения   -  person jayant rawat    schedule 23.03.2020