Brauchen Sie Hilfe bei der Erreichbarkeit (2.0.3 ddg)

Wenn meine app startet, überprüfe ich für die Erreichbarkeit, denn ich brauche eine sofortige Verbindung zum internet. Mein problem, obwohl, ist, dass es scheint, es gibt keine unmittelbare Bestätigung für die NetworkStatus, was bedeutet, dass direkt nach der Erreichbarkeit ist das setup, das ich überprüfen, ob ein Zusammenhang besteht, und es gibt, das gibt es nicht, unabhängig davon, ob in der Tat bin ich auf WiFi/3G, oder haben sich das radio aus.

Kann ich bestätigen, dass ich bin in der Tat immer eine Internet-Verbindung, da sofort nach der applicationDidFinishLaunching, gibt es eine Meldung, die meldet sich dann "ReachableViaWiFi"..

Was mache ich falsch? Warum ist es nicht zu bestätigen, eine gültige Internet-Verbindung sofort?

- (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;
        }
    }
}
InformationsquelleAutor runmad | 2010-01-28
Schreibe einen Kommentar