gpt4 book ai didi

ios - AWSS3TransferUtilityMultiPartUploadTask - 从后台返回的进度值未更新

转载 作者:行者123 更新时间:2023-11-30 11:21:36 24 4
gpt4 key购买 nike

我正在使用 AWS iOS SDK 将文件上传到 S3。我使用 AWSS3TransferUtility 因为我想允许后台上传。

后台任务正在运行 - 大文件可以在后台成功上传。问题是,当我将应用程序带回前台时,task.result.progress.fractionCompleted 值仍保持在后台运行之前的值。如果我在上传完成之前将应用程序放在前台,则进度值将保持该值直到上传完成,然后跳至 1.0。

当应用返回前台时,我在 TransferUtility 类上调用 enumerateToAssignBlocksForUploadTask:multiPartUploadBlocksAssigner:downloadBlocksAssigner:,然后重新分配进度和完成处理程序。

有谁知道什么可能导致该值不更新?因此,我不知道如何恢复更新我的进度条。谢谢!

编辑:这是我开始上传过程的地方。我有一个围绕 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)

}

最佳答案

我在下载文件时遇到同样的问题。 Here是我在他们的 github 页面上打开的问题的链接,至少对于下载文件的情况是这样。它们不会从正在使用的 NSURLSession 类接收回调。您的情况可能与此类似。

关于ios - AWSS3TransferUtilityMultiPartUploadTask - 从后台返回的进度值未更新,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51217235/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com