У меня есть приложение, которое реализует все навороты FileProviderExtension.Теперь возникает вопрос, что требуется для отображения прогресса загрузки / выгрузки в приложении «Файлы»?
Существует один ранее заданный вопрос с довольно расплывчатым ответом, который не дал результатов..
Это грубый код функции startProvidingItem(at url: URL ...)
:
let downloadDelegate = DownloadDelegate(completionHandler, targetLocation: url, fileManager: fileManager)
let session = URLSession(configuration: URLSessionConfiguration.default, delegate: downloadDelegate, delegateQueue: nil)
let downloadTask = session.downloadTask(with: sftpURL)
NSFileProviderManager.default.register(downloadTask, forItemWithIdentifier: id) { error in
if let error = error {
print("Error registering progress task \(error)")
} else {
print("Registered progress task")
downloadTask.resume()
}
}
Где DownloadDelegate
вызывает completionHandler
либо с ошибкой, либо nil
в случае успеха.Это все работает, но даже если downloadTask было зарегистрировано с FileProviderManager
, прогресс не отображается.
Начинается показ неопределенного счетчика и Waiting to Download
под файлом.Задача загрузки определенно отправляет события прогресса (подтвержденные с помощью метода urlSession(..., totalBytesWritten: ...)
в DownloadDelegate
), но FileProvider, по-видимому, игнорирует их.
TL; DR: Что требуется, чтобы заставить процесс загрузки работать вFileExtension