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