Benötigen Sie Hilfe bei der Erreichbarkeit (2.0.3ddg)

Beim Start meiner App überprüfe ich die Erreichbarkeit, da ich eine sofortige Internetverbindung benötige. Mein Problem ist jedoch, dass es anscheinend keine sofortige Bestätigung für das gibtNetworkStatusDies bedeutet, dass ich direkt nach dem Einrichten der Erreichbarkeit überprüfe, ob eine Verbindung besteht, und es wird angezeigt, dass keine besteht, unabhängig davon, ob ich tatsächlich über WiFi / 3G arbeite oder das Radio ausgeschaltet habe.

Ich kann bestätigen, dass ich tatsächlich eine Internetverbindung habe, da unmittelbar nach dem Start von applicationDidFinishLaunching eine Benachrichtigung angezeigt wird, in der "ReachableViaWiFi" protokolliert wird.

Was mache ich falsch? Warum wird eine gültige Internetverbindung nicht sofort bestätigt?

- (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;
        }
    }
}

Antworten auf die Frage(2)

Ihre Antwort auf die Frage