Godfather Godfather - 1 year ago 141
Swift Question

iOS 8 reachability always return false in simulator

I'm trying to detect if the phone has internet access or not. I stackoverflowed it and every time i use a library (https://github.com/ashleymills/Reachability.swift) or i use recomended class methods it ONLY works on iOS 9.0, but iOS 8 it just returns false (at least in the simulator, i dont know in a real phone). Any ideas?

enter image description here

Answer Source

Had the same problem. For the life of me, I couldn't figure out the reason why, so had to implement this workaround piece of code that works for both iOS 9 and iOS 8:

class func isConnectedToNetwork()-> Bool {

    var isConnected:Bool = false
    let request = NSMutableURLRequest(URL: NSURL(string: "http://google.com/")!)
    request.HTTPMethod = "HEAD"
    request.cachePolicy = NSURLRequestCachePolicy.ReloadIgnoringLocalAndRemoteCacheData
    request.timeoutInterval = 10.0

    var response: NSURLResponse?

    do {
        try _ = NSURLConnection.sendSynchronousRequest(request, returningResponse: &response) as NSData?

        if let httpResponse = response as? NSHTTPURLResponse {
            if httpResponse.statusCode == 200 {
                isConnected = true
    catch {

    return isConnected

Obviously, if Google falls - so does the workaround. But I'm taking that risk :)

Based on answer: http://stackoverflow.com/a/29050673/2941553

Recommended from our users: Dynamic Network Monitoring from WhatsUp Gold from IPSwitch. Free Download