From iOS 12 you simply use NWPathMonitor which is a line of code (example).
For historic purposes:
I'm trying to integrate network connectivity detection into my app, however it seems that somewhere along the line I have made a mistake as my network changes are not being detected/printed out into the console.
As mentioned in the post, I'm currently using these following classes and tools for the job:
- Reachability {.h, .m}
- NSNotificationCenter
- Network Link Conditioner
Code
In the AppDelegate.Swift, I've set up the NSNotificationCenter to detect changes:
func application(application: UIApplication, didFinishLaunchingWithOptions launchOptions: [NSObject: AnyObject]?) -> Bool {
    // ... 
    // A: Checks if the device is connected to the internet
    var defaultCenter: Void = NSNotificationCenter().addObserver(self, selector:"checkForReachability", name: kReachabilityChangedNotification, object: nil)
} 
In the same class AppDelegate, I've also created this function to be triggered whenever there is a change:
func checkForReachability () {        
    var networkReachability = Reachability.reachabilityForInternetConnection()
    networkReachability.startNotifier()
    
    var remoteHostStatus = networkReachability.currentReachabilityStatus()
    if (remoteHostStatus.value == NotReachable.value) {
        println("Not Reachable")
    } else if (remoteHostStatus.value == ReachableViaWiFi.value) {
        println("Reachable via Wifi")
    } else {
        println("Reachable")
    }
}
However, when using the Network Link Conditioner to manipulate and simulate changes in conditions, I haven't been able to see any of those changes reflected in the console.
 
     
     
     
     
     
     
     
     
     
     
     
     
     
     
    