Метод 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 изображений:

введите описание изображения здесь

0 ответов

Другие вопросы по тегам