Выполнить код newtork с приложением в фоновом режиме - PullRequest
0 голосов
/ 19 февраля 2020

У меня есть такой сценарий в моем приложении:

Я должен выполнить 2 блока кода несколько раз для N раз.

в первом блоке я должен выполнить сетевой вызов с Alamofire ( Я звоню в службу HTTP). этот вызов возвращает данные, и в этих данных есть путь к изображению, который я должен загрузить на устройстве

, во втором блоке я должен загрузить изображение и затем сохранить его на устройстве

После этого начните снова N раз.

Моя проблема в том, что у пользователя может быть приложение в фоновом режиме, и мне бы хотелось, чтобы этот процесс продолжался, когда приложение тоже в фоновом режиме.

По этой причине, после вызова Alamofire я вставляю этот код для загрузки изображения:

let config = URLSessionConfiguration.background(withIdentifier: "XXXXXX.XXXX")
let session = URLSession(configuration: config, delegate: self, delegateQueue: OperationQueue())
let url = URL(string: "testurl")
let task = session.downloadTask(with: url!)
task.resume()


func urlSession(_ session: URLSession, downloadTask: URLSessionDownloadTask, didFinishDownloadingTo location: URL) {

    //save image on device and I recall Alamofire for the next call
}

Моя проблема заключается в следующем: этот процесс не выполняется, когда приложение переходит в фоновый режим. В чем я не прав?

1 Ответ

0 голосов
/ 19 февраля 2020

Вам необходимо реализовать следующий делегат,

func application(_ application: UIApplication,
             handleEventsForBackgroundURLSession identifier: String,
             completionHandler: @escaping () -> Void) {
    // send the completion handler as background completion handler
}

Пожалуйста, обратитесь к ответу ниже для получения дополнительной информации: { ссылка }

...