I want to be able to check for internet connectivity when my View loads. To predetermine the contents of my view.
I have the following viewDidLoad method:
- (void)viewDidLoad {
[super viewDidLoad];
if(![self hasInternetConnection]){
NSLog(@"SHOW ORIGINAL DOC");
}
else{
NSLog(@"SHOW NEW DOC");
}
}
And I have a method called hasInternetConnection as follows:
- (BOOL)hasInternetConnection{
NSLog(@"Starting connection test");
internetReachableFoo = [Reachability reachabilityWithHostname:@"www.google.com"];
// Internet is reachable
internetReachableFoo.reachableBlock = ^(Reachability*reach){
// Update the UI on the main thread
dispatch_async(dispatch_get_main_queue(), ^{
NSLog(@"We have internet");
return YES;
});
};
// Internet is not reachable
internetReachableFoo.unreachableBlock = ^(Reachability*reach){
// Update the UI on the main thread
dispatch_async(dispatch_get_main_queue(), ^{
NSLog(@"We do not have internet");
return NO;
});
};
[internetReachableFoo startNotifier];
}
I don't want to use the deprecated Apple reachibility class using:
NetworkStatus internetStatus = [internetReachable currentReachabilityStatus];
How can I change the code in -(BOOL)hasInternetConnection to efficiently return a boolean for my method to work?
What i do in My Projects :
Create a custom class CheckInternet
of type NSObject
in CheckInternet.h
file
+ (BOOL) isInternetConnectionAvailable;
and in CheckInternet.m
file
+ (BOOL) isInternetConnectionAvailable
{
Reachability *internet = [Reachability reachabilityWithHostName: @"www.google.com"];
NetworkStatus netStatus = [internet currentReachabilityStatus];
bool netConnection = false;
switch (netStatus)
{
case NotReachable:
{
NSLog(@"Access Not Available");
netConnection = false;
break;
}
case ReachableViaWWAN:
{
netConnection = true;
break;
}
case ReachableViaWiFi:
{
netConnection = true;
break;
}
}
return netConnection;
}
import this class to your desired class, Now you can access as
in viewDidLoad
or any other method where you want
if ([CheckInternet isInternetConnectionAvailable])
{
// internet available
}
else
{
// no internet
}