Я использую 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
. Помогите мне, пожалуйста:
- Если есть способ достичь моей цели с помощью ashleymills/Reachability.swift
- Если есть способ добиться этого без ashleymills/Reachability.swift
- Если есть какой-либо другой способ отслеживать состояние сетевого подключения
С Уважением!