Фоновый 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 с другим ключом (предпочтительно тем же ключом для того же пользователя) и ищите, используя этот ключ.

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