A simple class to check for internet connection availability in Swift

Reach

A simple class to check for internet connection availability in Swift. Works for both 3G and WiFi connections.

Install

Manually
  • Add the Reach.swift file to your project.

Usage

There are two ways to get network status information from Reach.

  1. Call Reach().connectionStatus(). The network status is returned in an enum called ReachabilityStatus.

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")
}
  1. By subscribing to ReachabilityStatusChangedNotifications. 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)
    }
    
}

ToDo

  • Return storngly typed object containing more information about the network status.

Credits

  • 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.

GitHub

https://github.com/Isuru-Nanayakkara/Reach