Reachability not working as expected Reachability not working as expected objective-c objective-c

Reachability not working as expected


EDITED: you should remove the protocol, http from your reachabilityWithHostName call, so updated it to

 Reachability *reachability = [Reachability reachabilityWithHostname:@"www.google.com"]; NetworkStatus netStatus = [reachability currentReachabilityStatus];


Use this code to check whether the device is connected to internet or not

use this code in viewDidLoad :

 Reachability* internetReachable; = [Reachability reachabilityForInternetConnection];    [internetReachable startNotifier];    hostReachable = [Reachability reachabilityWithHostName: @"www.apple.com"] ;    [hostReachable startNotifier];

and add this function to your code:

-(void) checkNetworkStatus:(NSNotification *)notice{    recheabilityBool=FALSE;    nonrecheabilityBool=FALSE;    // called after network status changes    NetworkStatus internetStatus = [internetReachable currentReachabilityStatus];    switch (internetStatus)    {        case NotReachable:        {            nonrecheabilityBool=TRUE;            internetCon=0;            //NSLog(@"The internet is down.");            break;        }        case ReachableViaWiFi:        {            NSUserDefaults *prefs = [NSUserDefaults standardUserDefaults];            internetCon=404;            [prefs setInteger:internetCon forKey:@"conKey"];            //NSLog(@"The internet is working via WIFI.");            break;        }        case ReachableViaWWAN:        {            //NSLog(@"The internet is working via WWAN.");            break;        }    }    NetworkStatus hostStatus = [hostReachable currentReachabilityStatus];    switch (hostStatus)    {        case NotReachable:        {            internetCon=0;            if( nonrecheabilityBool==FALSE)            {                //NSLog(@"A gateway to the host server is down.");            }            break;        }        case ReachableViaWiFi:        {            if(recheabilityBool==FALSE)            {                recheabilityBool=TRUE;                NSUserDefaults *prefs = [NSUserDefaults standardUserDefaults];                internetCon=404;                [prefs setInteger:internetCon forKey:@"conKey"];                //NSLog(@"The internet is working via WIFI.");                break;            }            //NSLog(@"A gateway to the host server is working via WIFI.");            break;        }        case ReachableViaWWAN:        {            //NSLog(@"A gateway to the host server is working via WWAN.");            break;        }    }}- (BOOL)connected{    Reachability *reachability = [Reachability reachabilityForInternetConnection];    NetworkStatus networkStatus = [reachability currentReachabilityStatus];    return !(networkStatus == NotReachable);}


I have a same issue with the Tony Million's Reachability : network status was always set to NotReachable.I fix it with adding the SystemConfiguration Framework

Hope it helps