Ho un'applicazione VoIP che viene eseguita costantemente anche sullo sfondo. Mentre sono in background sto chiamando dal thread principale: (per stabilire una connessione di rete nel caso in cui diagnostichi una rete persa).PerformSelector Dopo il ritardo non viene eseguito in modalità background - iPhone
[self performSelector :@selector(Reconnect:) withObject:nil afterDelay:60.0];
Tuttavia, il selettore viene eseguito solo quando la mia app torna in primo piano. Devo fare qualcosa in particolare per far sì che il selettore venga eseguito mentre è in background?
Grazie
Edit:
-(void) reconectInBackgroundAfterDelay:(NSTimeInterval) dealy
{
NSLog(@"reconectInBackgroundAfterDelay");
UIApplication* app = [UIApplication sharedApplication];
bgTask = [app beginBackgroundTaskWithExpirationHandler:^{
[app endBackgroundTask:bgTask];
bgTask = UIBackgroundTaskInvalid;
}];
// Start the long-running task and return immediately.
dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0), ^{
[self performSelector :@selector(Reconnect:) withObject:nil afterDelay:dealy];
[app endBackgroundTask:bgTask];
bgTask = UIBackgroundTaskInvalid;
});
}
ho aggiunto questo codice, invece, ma ancora il metodo "Reconnect" non è sempre chiamato dopo il ritardo previsto. Io chiamo il metodo "reconectInBackgroundAfterDelay" mentre sono già in background.
Altri suggerimenti?
Modifica 2 Trovato una soluzione. Vedi sotto
Grazie mille, funziona bene. –
La mia applicazione è anche un'applicazione voip. Ma inizialmente la mia app scarica i file dal server prima di registrarsi. È possibile continuare a scaricare utilizzando la soluzione. –
Ecco [http://stackoverflow.com/questions/14828955/download-files-using-http-request-in-background-in-iphone-above-ios-4-0#comment20777172_14828955] [La mia domanda] –