Метод URLSessionDownloadDelegate didWriteData не вызывается после фонового приложения - PullRequest
0 голосов
/ 09 ноября 2018

В моем приложении я хочу скачивать большие файлы. Таким образом, я хочу показать прогресс загрузки пользователю. Для этого я реализовал URLSessionDownloadDelegate.

Это прекрасно работает, пока приложение не перейдет в фоновый режим. Когда пользователь снова открывает приложение, didWriteData не вызывается. Однако didFinishDownloadingTo все еще называется. Следовательно, это не проблема с самим делегатом.

Некоторые другие разработчики сообщили о подобных проблемах в https://forums.developer.apple.com/message/229215#229215.

Однако до сих пор, похоже, нет решений или обходных путей для этой проблемы. Кто-нибудь здесь нашел какой-нибудь обходной путь? Если нет, что я могу использовать вместо SessionDownloadTask?

1 Ответ

0 голосов
/ 03 декабря 2018

Это похоже на ошибку в iOS12. В качестве обходного пути я возобновляю все задачи загрузки после того, как приложение снова стало активным. Как это:

private(set) var session: URLSession?

func applicationDidBecomeActive(_ application: UIApplication) {
    session?.getAllTasks(completionHandler: { tasks in
        for task in tasks {
            task.resume()
        }
    })
}
...