Ich habe ein Problem, wenn es um ein langsames Backend geht und Daten mit Hintergrundkonfiguration heruntergeladen werden.NSURLSessionDownloadTask wiederholt bei Verwendung der Hintergrundkonfiguration
NSURLSessionConfiguration *sessionConfig = [NSURLSessionConfiguration backgroundSessionConfiguration:identifier];
_backgroundSession = [NSURLSession sessionWithConfiguration:sessionConfig delegate:self delegateQueue:nil];
NSURLSessionDownloadTask *downloadTask = [_backgroundSession downloadTaskWithURL:URL];
[downloadTask resume];
Wenn die Verbindung astablished ist, aber es dauert mehr als 60 Sekunden für es ein Timeout auftritt zurück zu senden Daten. Das ist gut. Das Verhalten, das ich erfahre, ist jedoch, dass ich keinen Fehler erhalte. Die Sitzung sendet nur eine neue Anfrage. "Gib mir Daten wieder". Ich habe keine Ahnung, wo das passiert. Nicht in meinem Code und keine Delegate-Methoden, die ich kenne. Ich habe nur Zugriff auf die Serverprotokolle. Der Server benötigt ungefähr 68 Sekunden, um Daten zurückzusenden, aber die App ignoriert sie einfach, weil sie auf die neue Anfrage wartet.
Eine Lösung besteht darin, den Zeitüberschreitungswert zu erhöhen. Aber ich mag es nicht und es funktioniert nur für iOS 7. Nicht iOS 8.
sessionConfig.timeoutIntervalForRequest = 10 * 60.0;
Hat jemand einen Einblick in diese? Ich habe diese link about timeout issue for background session hier auf Stackoverflow gefunden. Es ist 10 Monate alt, aber keine Lösungen, nur die Leute stimmen zu.
Frage: warum Sie Unterscheidung zwischen iOS 8 und iOS 7 schließlich machen Sie? Könnten Sie nicht einfach sowohl timeoutIntervalForRequest als auch timeoutInterval setzen? – dlinsin