Фоновый URLSession с идентификатором уже существует - PullRequest
0 голосов
/ 13 декабря 2018

У меня есть S3Service, который является одноэлементным и управляет всеми загрузками и загрузками, связанными с S3.Когда я загружаю первое изображение, оно работает нормально, но если я пытаюсь последовательно загрузить изображение, оно выдает мне это предупреждение, и блок завершения никогда не вызывается.

Фоновый URLSession с идентификатором com.amazonaws.AWSS3TransferUtility.Identifier.TransferManager уже существует.

Вот как выглядит способ загрузки:

if let data = image.jpegData(compressionQuality: 0.5) {
        let transferUtility = AWSS3TransferUtility.s3TransferUtility(forKey: S3Service.TRANSFER_MANAGER_KEY)
        transferUtility.uploadUsingMultiPart(data: data, bucket: EnvironmentUtils.getBucketName(), key: filename, contentType: "image/jpg", expression: nil, completionHandler: { task,error in

            if let error = error {
                print(error.localizedDescription)
            } else {
                print("Image upload success")
            }
        })
}

1 Ответ

0 голосов
/ 14 декабря 2018

Вызов утилиты передачи регистра AWSS3TransferUtility.register(with: serviceconfig, forKey: KEY) вызвал вышеуказанную проблему.Следует учитывать две вещи:

  • AWSS3TransferUtility должен быть зарегистрирован только один раз за сеанс приложения.Затем мы можем использовать AWSS3TransferUtility.S3TransferUtilityForKey, чтобы получить экземпляр там, где это необходимо.

  • Если это для разных пользователей в приложении (например, регистрация) и если мы хотим сохранить AWSS3TransferUtility отдельно для каждого пользователя, зарегистрируйте AWSS3TransferUtility с другим ключом (желательно с тем же ключом для того же пользователя) и найдите его, используя этот ключ.

...