AWSS3TransferUtilityMultiPartUploadTask - значение прогресса не обновляется, возвращаясь из фона
Я использую AWS iOS SDK для загрузки файлов на S3. я использую AWSS3TransferUtility
потому что я хочу разрешить фоновые загрузки.
Фоновая задача работает - большой файл может успешно загружаться в фоновом режиме. Проблема в том, что когда я возвращаю свое приложение на передний план, task.result.progress.fractionCompleted
значение остается на значении до того, как оно будет обосновано. И если я передний план моего приложения до завершения загрузки, значение прогресса будет оставаться на этом значении, пока оно не будет сделано, а затем подскочите до 1,0.
Когда приложение возвращается на передний план, я звоню enumerateToAssignBlocksForUploadTask:multiPartUploadBlocksAssigner:downloadBlocksAssigner:
в моем классе TransferUtility, и я переназначаю обработчики прогресса и завершения.
Кто-нибудь знает, что может привести к тому, что это значение не обновляется? Я не уверен, как возобновить обновление моего индикатора выполнения из-за этого. Спасибо!
Изменить: Здесь я начинаю процесс загрузки. У меня есть оболочка для задачи AWS, которая содержит обработчики прогресса и завершения.
func upload(storagePath: String, sourceURL: URL, _ progressCompletion: @escaping ProgressCompletionCallback)-> UploadTask {
let expression = AWSS3TransferUtilityMultiPartUploadExpression()
expression.progressBlock = {(task, progress) in
DispatchQueue.main.async(execute: {
print("Progess: \(progress)")
progressCompletion(false, Float(progress.fractionCompleted), nil)
})
}
var completionHandler: AWSS3TransferUtilityMultiPartUploadCompletionHandlerBlock
completionHandler = { (task, error) -> Void in
DispatchQueue.main.async(execute: {
print("Completed!")
progressCompletion(true, Float(task.progress.fractionCompleted), error)
})
}
let awsTask = transferUtility.uploadUsingMultiPart(fileURL: sourceURL,
bucket: Constants.bucketName,
key: storagePath,
contentType: "text/plain",
expression: expression,
completionHandler: completionHandler)
return UploadTask(task: awsTask,
progressBlock: expression.progressBlock!,
completionBlock: completionHandler)
}
0 ответов
Я сталкиваюсь с той же проблемой при загрузке файлов. Вот ссылка на проблему, которую я открыл на их странице GitHub, по крайней мере, в случае загрузки файлов. Они не получают обратные вызовы от NSURLSession
класс, который используется. Это, наверное, что-то похожее в вашем случае.