Фоновый URLSession с идентификатором уже существует
У меня есть 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 ответ
Призыв к регистрации передачи утилиты AWSS3TransferUtility.register(with: serviceconfig, forKey: KEY)
был причиной вышеупомянутой проблемы. Есть две вещи, которые следует иметь в виду.
AWSS3TransferUtility
должны быть зарегистрированы только один раз за сеанс приложения. Тогда мы можем использоватьAWSS3TransferUtility.S3TransferUtilityForKey
чтобы получить экземпляр там, где это необходимо.Если это для разных пользователей в приложении (например, регистрация) и если мы хотим сохранить
AWSS3TransferUtility
отдельно для каждого пользователя, зарегистрируйтесьAWSS3TransferUtility
с другим ключом (предпочтительно тем же ключом для того же пользователя) и ищите, используя этот ключ.