Ho un problema quando si tratta di un back-end lento e il download dei dati con la configurazione in background.NSURLSessionDownloadTask continua a riprovare quando si utilizza Configurazione sfondo
NSURLSessionConfiguration *sessionConfig = [NSURLSessionConfiguration backgroundSessionConfiguration:identifier];
_backgroundSession = [NSURLSession sessionWithConfiguration:sessionConfig delegate:self delegateQueue:nil];
NSURLSessionDownloadTask *downloadTask = [_backgroundSession downloadTaskWithURL:URL];
[downloadTask resume];
Se la connessione è astablished ma ci vuole più di 60 secondi per inviare di nuovo i dati si verifica un timeout. Questo va bene. Tuttavia, il comportamento che ho riscontrato è che non ricevo un errore. La Sessione invia appena una nuova richiesta. "Dammi di nuovo i dati". Non ho idea di dove questo accada. Non nel mio codice e non vengono chiamati metodi delegati di cui sono a conoscenza. Ho solo accesso ai log del server. Richiede al server circa 68 secondi per inviare i dati, ma l'app lo ignora semplicemente perché è in attesa della nuova richiesta.
Una soluzione è aumentare il valore di timeout. Ma non mi piace e funziona solo per iOS 7. Non per iOS 8.
sessionConfig.timeoutIntervalForRequest = 10 * 60.0;
Qualcuno ha qualche idea in questo? Ho trovato questo link about timeout issue for background session qui su StackOverflow. Ha 10 mesi ma non ci sono soluzioni, solo le persone sono d'accordo.
Domanda: perché si fa a fare distinzione tra iOS 8 e iOS 7, dopo tutto? Non potresti semplicemente impostare sia timeoutIntervalForRequest che timeoutInterval? – dlinsin