Domanda

Voglio verificare la presenza di una connessione di rete valida. Ho seguito ad esempio di raggiungibilità di Apple e mettere il mio check-in applicationDidFinishLaunching

#pragma mark -
#pragma mark Application lifecycle

    - (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {    

        if(getenv("NSZombieEnabled") || getenv("NSAutoreleaseFreedObjectCheckEnabled")) 
        {
            NSLog(@"NSZombieEnabled/NSAutoreleaseFreedObjectCheckEnabled enabled!");
        }

        // Override point for customization after application launch.
        [[NSNotificationCenter defaultCenter] addObserver: self selector: @selector(reachabilityChanged:) name: kReachabilityChangedNotification object: nil];

        //Check for connectivity
        internetReach = [[Reachability reachabilityForInternetConnection] retain];
        [internetReach startNotifer];
        [self updateInterfaceWithReachability: internetReach];

        [window addSubview:navigationController.view];
        [window makeKeyAndVisible];

        return YES;
    }

Tuttavia, la mia app andrà in crash a volte con l'Application Failed to Launch in Time errore

ho postato il mio incidente come una questione ecco: è riuscito a lanciare in Time

non sono sicuro dove dovrei eseguire il controllo di raggiungibilità?

È stato utile?

Soluzione

In -applicationDidBecomeActive si può chiamare un metodo di in background che utilizza il codice di raggiungibilità con -performSelectorInBackground:withObject:.

Altri suggerimenti

Un controllo raggiungibilità potrebbe richiedere una quantità significativa di tempo (30 secondi o più) a seconda delle condizioni della rete. Ma se la UI della tua applicazione non risponde per un determinato numero di secondi (meno di 30), il sistema operativo presuppone che è morto e lo uccide.

Se fate il vostro assegno di raggiungibilità in un thread in background, non il thread dell'interfaccia utente, allora la vostra interfaccia utente rimarrà reattivo, e né il sistema operativo, né l'utente si assume che la vostra applicazione è bloccato o si è schiantato.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top