Фоновая сессия 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")
            }
        })
}

person Agent Smith    schedule 13.12.2018    source источник
comment
Как выглядит ваше одноэлементное свойство?   -  person Caleb Kleveter    schedule 13.12.2018
comment
@CalebKleveter Он имеет вышеупомянутый код в методе загрузки, методе регистрации утилиты AWSS3 Transfer и методе ее отмены.   -  person Agent Smith    schedule 13.12.2018


Ответы (1)


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

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

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

person Agent Smith    schedule 14.12.2018