I am trying to check if my app has internet connection and I can do this using apples Reachability, like this
internetReach = [Reachability reachabilityForInternetConnection];
[internetReach startNotifier];
NetworkStatus netStatus = [internetReach currentReachabilityStatus];
witch (netStatus){
case ReachableViaWWAN:{
isReachable = YES;
NSLog(@"4g");
noInternetView.hidden = YES;
break;
}
case ReachableViaWiFi:{
isReachable = YES;
noInternetView.hidden = YES;
NSLog(@"wifi");
break;
}
case NotReachable:{
NSLog(@"NONE");
noInternetView = [[CheckInternetView alloc] initWithFrame:self.view.bounds];
[self.view addSubview:noInternetView];
isReachable = NO;
break;
}
}
And it works, but now what I want to do is if it is the last case where there is no internet, I show a view telling the user and then in the background, I want to check for when the internet comes back and if it does come back then remove the view, like i did.
I tried putting the above code in a method, and if no internet then call the method again, but then the view just didn't appear and if wasn't running a check it just continually ran the method over and over.
So if there is no internet how can I run a check in the background to see when it comes back, and then hide the view?
Thanks for the help in advace.
EDIT
Here is my method I first call from viewDidLoad
-(void)checkInternet {
internetReach = [Reachability reachabilityForInternetConnection];
[internetReach startNotifier];
NetworkStatus netStatus = [internetReach currentReachabilityStatus];
switch (netStatus){
case ReachableViaWWAN:{
isReachable = YES;
NSLog(@"4g");
noInternetView.hidden = YES;
break;
}
case ReachableViaWiFi:{
isReachable = YES;
noInternetView.hidden = YES;
NSLog(@"wifi");
break;
}
case NotReachable:{
NSLog(@"NONE");
noInternetView = [[CheckInternetView alloc] initWithFrame:self.view.bounds];
[self.view addSubview:noInternetView];
isReachable = NO;
[self checkInternet];
break;
}
}
}
And it works when I turn internet back on, I get the correct case, but when it is continuously running to check when the internet comes on, the view does not appear? Why doesn't it appear?
for background entry you can use
applicationDidEnterForeground
method to check the status in AppDelegate.OR
you can use in the view
UIApplicationDidBecomeActiveNotification
notification to recheck internet status and hide/ show the view