I'm a beginner in Swift and I'm trying to make an alert for user to retry connecting to internet. I'm using Reachability by ashleymills. I'm confused on what to put on my alert handler since this is not working:
func alertConnect() -> UIViewController{
let reach = Reachability()
let alert = UIAlertController(title: "No Internet", message: "Tap to retry connect internet", preferredStyle: .alert)
alert.addAction(UIAlertAction(title: "Retry", style: .default, handler: {
action in
do {
try reach?.startNotifier()
} catch {
print("Unable to start notifier")
}
}))
alert.addAction(UIAlertAction(title: Constants.cancel, style: .cancel))
return alert
}
Here's my Reachability.class:
class ConnectionManager: NSObject {
var reachability: Reachability!
static let sharedInstance: ConnectionManager = { return ConnectionManager() }()
override init() {
super.init()
reachability = Reachability()!
NotificationCenter.default.addObserver(
self,
selector: #selector(networkStatusChanged(_:)),
name: .reachabilityChanged,
object: reachability
)
do {
try reachability.startNotifier()
} catch {
print("Unable to start notifier")
}
}
@objc func networkStatusChanged(_ notification: Notification) {
// Do something globally here!
do {
try reachability.startNotifier()
} catch {
print("Unable to start notifier")
}
}
static func stopNotifier() -> Void {
do {
try (ConnectionManager.sharedInstance.reachability).startNotifier()
} catch {
print("Error stopping notifier")
}
}
static func isReachable(completed: @escaping (ConnectionManager) -> Void) {
if (ConnectionManager.sharedInstance.reachability).connection != .none {
completed(ConnectionManager.sharedInstance)
}
}
static func isUnreachable(completed: @escaping (ConnectionManager) -> Void) {
if (ConnectionManager.sharedInstance.reachability).connection == .none {
completed(ConnectionManager.sharedInstance)
}
}
static func isReachableViaWWAN(completed: @escaping (ConnectionManager) -> Void) {
if (ConnectionManager.sharedInstance.reachability).connection == .cellular {
completed(ConnectionManager.sharedInstance)
}
}
static func isReachableViaWiFi(completed: @escaping (ConnectionManager) -> Void) {
if (ConnectionManager.sharedInstance.reachability).connection == .wifi {
completed(ConnectionManager.sharedInstance)
}
} }
What should I put on my Retry action handler to let the user reconnect to internet? Thanks for any help.