Метод pause () в AWS IOS SDK не работает должным образом при загрузке нескольких файлов
Пауза TransferUtility не работает должным образом при загрузке нескольких файлов:
- Шаг 1. Загрузите несколько файлов с помощью функции ibUploadTapped.
- Шаг 2. Приостановите загрузку с помощью функции suspendUpload().
- Шаг 3: Подождите около 20 секунд.
- Шаг 4: он автоматически загружается снова
- Шаг 5: полностью приостановите загрузку.
Моя проблема:
- После паузы около 20 секунд он автоматически загрузится снова, прежде чем пауза будет полностью
- Могу ли я приостановить загрузку во время вызова функции suspendUpload() и продолжить загрузку только после вызова функции resumeUpload()?
- Он не загружается автоматически, когда я вызываю метод.cancel(), но.suspend() не работает должным образом.
Пожалуйста, помогите мне. Я использую версию SDK: 2.12.3. Вот код для воспроизведения проблемы:
Функция загрузки:
@IBAction func ibUploadTapped(_ sender: Any) {
for image in uploadImages {
if let data = image.jpegData(compressionQuality: 1) {
let fileName = "image\(Int(Date().timeIntervalSinceReferenceDate)).jpeg"
let modal = UploadModal(data: data, fileName: fileName, type: "image/jpeg")
S3UploadManager.shared.uploadRequest(modal: modal, comlection: { (percent) in
print(percent/Float(self.images.count))
})
}
}
}
Менеджер загрузки классов:
import Foundation
import AWSS3
typealias completionHandler = (_ uploadPercent: Float) -> Void
class S3UploadManager {
static var shared = S3Provider()
let bucketName = ""
public lazy var uploadingTasks = [AWSS3TransferUtilityUploadTask]()
let transferUtility = AWSS3TransferUtility.default()
public func uploadRequest(modal: UploadModal, comlection: @escaping completionHandler) {
let expression: AWSS3TransferUtilityUploadExpression = AWSS3TransferUtilityUploadExpression()
expression.progressBlock = {(task, progress) in
print(task.transferID)
var percent: Float = 0
for task in self.uploadingTasks {
percent += Float(task.progress.fractionCompleted)
}
comlection(percent)
}
let task = transferUtility.uploadData(modal.data, bucket: bucketName, key: modal.fileName, contentType: modal.type, expression: expression)
task.continueWith { (task) -> Any? in
if let error = task.error {
return nil
}
if let uploadTask = task.result {
print("append upload: \(uploadTask.transferID)")
self.uploadingTasks.append(uploadTask)
}
return nil
}
}
public func suspendUpload() {
for task in self.uploadingTasks {
task.suspend()
print("suspend upload: \(task.transferID)")
}
}
public func resumeUpload() {
for task in self.uploadingTasks {
task.resume()
}
}
}
Пример с загрузкой 6 изображений: