Нужна помощь с Reachability (2.0.3ddg)
Когда мое приложение запускается, я проверяю доступность, потому что мне нужно немедленное подключение к интернету. Моя проблема, однако, заключается в том, что, как представляется, нет немедленного подтвержденияNetworkStatus
Это означает, что сразу после настройки Reachability я проверяю, есть ли соединение, и оно возвращает его, независимо от того, на самом ли деле я нахожусь на WiFi / 3G или выключил радио.
Я могу подтвердить, что на самом деле я получаю подключение к Интернету, потому что сразу после applicationDidFinishLaunching появляется уведомление, которое затем регистрирует «ReachableViaWiFi» ..
Что я делаю неправильно? Почему это не подтверждает правильное подключение к Интернету сразу?
- (void)applicationDidFinishLaunching:(UIApplication *)application {
NetworkStatus netStatus = [hostReach currentReachabilityStatus];
if (netStatus == NotReachable) {
ErrorViewController *errorViewController = [[ErrorViewController alloc] initWithNibName:@"ErrorView" bundle:[NSBundle mainBundle]];
[tabBarController.view removeFromSuperview];
[window addSubview:[errorViewController view]];
return;
}
}
-(void)setupReachability {
[[NSNotificationCenter defaultCenter] addObserver: self selector: @selector(reachabilityChanged:) name:kReachabilityChangedNotification object: nil];
hostReach = [[Reachability reachabilityWithHostName:@"www.google.com"] retain];
[hostReach startNotifier];
}
-(void)reachabilityChanged:(NSNotification *)notification {
Reachability* curReach = [notification object];
NSParameterAssert([curReach isKindOfClass: [Reachability class]]);
NetworkStatus netStatus = [curReach currentReachabilityStatus];
BOOL connectionRequired = [curReach connectionRequired];
switch (netStatus)
{
case NotReachable:
{
[[NSUserDefaults standardUserDefaults] setInteger:kNOTREACHABLE forKey:kREACHABILITYSTATUS];
NSLog(@"NotReachable");
connectionRequired = NO;
break;
}
case ReachableViaWWAN:
{
[[NSUserDefaults standardUserDefaults] setInteger:kREACHABLEVIAWWAN forKey:kREACHABILITYSTATUS];
NSLog(@"ReachableViaWWAN");
break;
}
case ReachableViaWiFi:
{
[[NSUserDefaults standardUserDefaults] setInteger:kNOTREACHABLE forKey:kREACHABILITYSTATUS];
NSLog(@"ReachableViaWiFi");
break;
}
}
}