Я пытался показать оповещение о доступности inte rnet соединения. Реализован код для проверки inte rnet и он отлично работает. Но когда inte rnet не читается, я пытаюсь показать предупреждение, но предупреждение отображается дважды.
вот код:
@objc func reachabilityChanged(_ note: NSNotification) {
let reachability = note.object as! Reachability
if reachability.connection != .unavailable {
if reachability.connection == .wifi {
print("Reachable via WiFi")
} else {
print("Reachable via Cellular")
}
} else {
print("Not reachable")
let alert = UIAlertController(title: "No Internet Connection", message: "Make sure your device is connected to the internet.", preferredStyle: UIAlertController.Style.alert)
alert.addAction(UIAlertAction(title: "OK", style: UIAlertAction.Style.default, handler: nil))
// self.window?.rootViewController?.present(alert, animated: true, completion: nil)
topMostViewController().present(alert, animated: true, completion: nil)
// let alertVC = UIAlertController(title: "No Internet Connection" , message: "Make sure your device is connected to the internet.", preferredStyle: UIAlertController.Style.alert)
// let okAction = UIAlertAction(title: "Okay", style: UIAlertAction.Style.cancel) { (alert) in
//// exit(0) // Your code here
// }
// alertVC.addAction(okAction)
// DispatchQueue.main.async {
// var presentVC = self.window?.rootViewController
// while let next = presentVC?.presentedViewController {
// presentVC = next
// }
// presentVC?.present(alertVC, animated: true, completion: nil)
// }
}
}
func topMostViewController() -> UIViewController {
var topViewController: UIViewController? = UIApplication.shared.keyWindow?.rootViewController
while ((topViewController?.presentedViewController) != nil) {
topViewController = topViewController?.presentedViewController
}
return topViewController!
}