У меня есть функция синхронизации, когда в фоновом режиме происходит серия загрузок.
Для этого я создаю экземпляр URLSession с фоновой конфигурацией, как показано ниже:
let config = URLSessionConfiguration.background(withIdentifier: "BackgroundSessionDL")
config.httpMaximumConnectionsPerHost = 20
self.session = URLSession(configuration: config, delegate: self, delegateQueue: nil)
Каждый из задачи загрузки (которых может быть несколько сотен) добавляются следующим образом:
var request = URLRequest(url: url)
request.addValue("Bearer \(accessToken)", forHTTPHeaderField: "Authorization")
let downloadTask = self.session.downloadTask(with: request)
downloadTask.resume()
Этот код отлично работает на iOS 12 или более ранних версиях - загрузка продолжается даже в фоновом режиме для задач уже добавлено. Но для iOS 13 проблема возникает следующим образом:
- Как только приложение переходит в фоновый режим, загрузка останавливается.
- Если выполняется какая-либо задача загрузки и приложение установлено на заднем плане, никаких журналов, связанных с обратным вызовом, не наблюдается даже после того, как приложение снова выведено на передний план.
Я попытался выяснить, есть ли какие-либо новые классы / рамки, представленные Apple для загрузки фоновых задач на iOS 13, но не нашел ничего по этому поводу. Кроме того, класс, используемый в более ранних версиях для представления задачи фоновой загрузки, все еще НЕ устарел в iOS 13 и является единственным результатом при поиске фоновой загрузки в iOS 13. Аналогично, фоновая конфигурация используется для сеанса HTTP , до сих пор НЕ устарел. Поэтому я считаю, что текущая реализация фоновой загрузки рекомендована Apple. (Насколько я понимаю, «BGTaskScheduler» не предназначен для этого, пожалуйста, исправьте меня, если не так).
Итак, это связано с какой-либо недавно введенной ошибкой в iOS 13? ИЛИ Apple ожидает каких-либо изменений в этой реализации, например, от c до iOS 13?
Редактировать:
Я уже добавил handleEventsForBackgroundURLSession
перезвонить. Обнаружено, что соответствующие журналы не распечатываются, а размер приложения не увеличивается в настройках iOS 13. Итак, похоже, что загрузка не продолжается в фоновом режиме и это не связано с тем, что обратные вызовы, связанные с загрузкой, не запускаются.