Internet ios-applicatie controleren

Ik heb een iPhone-applicatie gemaakt Waar ik de internetverbinding wil controleren. Op de didFinishLaunchingWithOptions-methode van de app-deelnemersmethode die ik schreef

-(BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions 
{
    self.window = [[[UIWindow alloc] initWithFrame:[[UIScreen mainScreen] bounds]] autorelease];
    viewController1 = [[ViewController1 alloc] initWithNibName:@"ViewController1" title:firstTabTitleGlobal bundle:nil];
    viewController2 = [[ViewController2 alloc] initWithNibName:@"ViewController2" title:secondTabTitleGlobal bundle:nil];

    newNavController = [[UINavigationController alloc] initWithRootViewController:viewController1];

    userNavController = [[UINavigationController alloc] initWithRootViewController:viewController2];

    self.tabBarController = [[[UITabBarController alloc] init] autorelease];
    self.tabBarController.viewControllers = [NSArray arrayWithObjects:newNavController,userNavController,nil]

    Reachability *r = [Reachability reachabilityWithHostName:globalHostName];

    NetworkStatus internetStatus = [r currentReachabilityStatus];

    if ((internetStatus != ReachableViaWiFi) && (internetStatus != ReachableViaWWAN))
    {
        [self showAlert:globalNetAlertTitle msg:globalNetAlertMsg];
        [activityIndicator stopAnimating];
    }
    else
    {
        [activityIndicator stopAnimating];
        self.window.rootViewController = self.tabBarController;
        [self.window makeKeyAndVisible];
    }
}

Mijn code is in orde, want wanneer er geen internetconnectiviteit is, laat dit dan weten. Maar het probleem is dat er geen interner is dan default.png. Wanneer ik apps opnieuw uitvoer, worden de apps uitgevoerd vanaf het weergeven van default.png. En er gebeurt niets. Bij voorbaat dank.

1

2 antwoord

application:didFinishLaunchingWithOptions: will only run when an app is launched.

If you want your application to check for availability on subsequent application activation, try putting your code in applicationDidBecomeActive:

2
toegevoegd
Ik denk dat je antwoord het probleem van de vrager oplost - de reden voor de hogere stemmen, maar het gebruik van NSNotifications is veel praktischer en nuttiger bij het bieden van dynamische updates dan dat je de internetverbinding handmatig moet controleren.
toegevoegd de auteur Jonathan King, de bron

Wat is misschien beter, gebruik dan NSNotifications om je dynamisch te vertellen of je connectiviteit hebt. Je kunt dit doen met een appelles genaamd 'reachabilty'. Zodra u het bestand in uw project hebt opgenomen, kunt u zoiets als dit gebruiken;

//in viewDidOnload    
[[NSNotificationCenter defaultCenter] addObserver:self 
                                          selector:@selector(handleNetworkChange:) 
                                          name:kReachabilityChangedNotification object:nil];
reachability = [[Reachability reachabilityForInternetConnection] retain];
[reachability startNotifier];
NetworkStatus status = [reachability currentReachabilityStatus];

if (status == NotReachable) {
    //Do something offline
} else {
    //Do sometihng on line
}

- (void)handleNetworkChange:(NSNotification *)notice{
 NetworkStatus status = [reachability currentReachabilityStatus];
 if (status == NotReachable) {
  //Show offline image
 } else {
  //Hide offline image
 }

}

(dit is de gecorrigeerde code van Bereikbaarheid netwerkwijzigingsgebeurtenis niet geactiveerd )

U kunt dan uw afbeeldingen updaten zodra een netwerkverandering plaatsvindt. Vergeet echter niet om jezelf te verwijderen van het ontvangen van meldingen in de dealloc met;

[[NSNotificationCenter defaultCenter] removeObserver:self name:kReachabilityChangedNotification object:nil];

Als u meer informatie nodig hebt over hoe u dit kunt implementeren, help ik u graag verder!

Jonathan

1
toegevoegd