A simple class to check for internet connection availability in Swift. Works for both 3G and WiFi connections.
- Add the Reach.swift file to your project.
There are two ways to get network status information from Reach.
- Call
Reach().connectionStatus()
. The network status is returned in an enum calledReachabilityStatus
.
let status = Reach().connectionStatus()
switch status {
case .unknown, .offline:
print("Not connected")
case .online(.wwan):
print("Connected via WWAN")
case .online(.wiFi):
print("Connected via WiFi")
}
- By subscribing to
ReachabilityStatusChangedNotification
s. The network status is returned as a string.
override func viewDidLoad() {
super.viewDidLoad()
NotificationCenter.default.addObserver(self, selector: #selector(ViewController.networkStatusChanged(_:)), name: Notification.Name(rawValue: ReachabilityStatusChangedNotification), object: nil)
Reach().monitorReachabilityChanges()
}
@objc func networkStatusChanged(_ notification: Notification) {
if let userInfo = notification.userInfo {
let status = userInfo["Status"] as! String
print(status)
}
}
- Return storngly typed object containing more information about the network status.
- Chris Danielson is the author of the original code written in Objective-C.
- Martin R from StackOverflow helped me immensely in converting C code to Swift.