У меня возникла проблема, когда речь идет о медленном бэкэнд и загрузке данных с помощью конфигурации фона.NSURLSessionDownloadTask продолжает повторять попытку при использовании конфигурации фона
NSURLSessionConfiguration *sessionConfig = [NSURLSessionConfiguration backgroundSessionConfiguration:identifier];
_backgroundSession = [NSURLSession sessionWithConfiguration:sessionConfig delegate:self delegateQueue:nil];
NSURLSessionDownloadTask *downloadTask = [_backgroundSession downloadTaskWithURL:URL];
[downloadTask resume];
Если соединение astablished, но она занимает более 60 секунд для того, чтобы отправить обратно данных происходит тайм-аут. Это нормально. Однако поведение, которое я испытываю, заключается в том, что я не получаю сообщение об ошибке. Сессия просто отправляет новый запрос. «Дайте мне данные снова». Я понятия не имею, где это происходит. Не в моем коде и не вызываются методы делегата, о которых я знаю. Я просто имею доступ к журналам сервера. Серверу требуется примерно 68 секунд для отправки данных, но приложение просто игнорирует его, потому что ожидает нового запроса.
Одним из решений является увеличение значения таймаута. Но мне не нравится это, и это работает только для прошивки 7. Не IOS 8.
sessionConfig.timeoutIntervalForRequest = 10 * 60.0;
Кто-нибудь есть какие-либо понять в этом? Я нашел это link about timeout issue for background session здесь, в stackoverflow. Это 10 месяцев, но нет решений, только люди соглашаются.
Вопрос: почему вы делаете различие между прошивкой 8 и прошивкой 7 после того, как все? Не могли бы вы установить как timeoutIntervalForRequest, так и timeoutInterval? – dlinsin