swift - 具有标识符的后台 URLSession 已存在

标签 swift amazon-s3 nsurlsession awss3transferutility aws-sdk-ios

我有一个 S3Service,它是一个管理所有与 S3 相关的上传和下载的单例。 当我上传第一张图片时它工作正常但如果我尝试连续上传图片它会给我这个警告并且永远不会调用完成 block 。

A background URLSession with identifier com.amazonaws.AWSS3TransferUtility.Identifier.TransferManager already exists.

这是我上传方法的样子:

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")
            }
        })
}

最佳答案

注册传输实用程序 AWSS3TransferUtility.register(with: serviceconfig, forKey: KEY) 的调用导致了上述问题。有两件事应该牢记。

  • AWSS3TransferUtility 应在每个应用程序 session 中仅注册一次。然后我们可以使用 AWSS3TransferUtility.S3TransferUtilityForKey 在需要的地方获取实例。

  • 如果这些是针对应用程序内的不同用户(例如注册),并且如果我们希望为每个用户保留 AWSS3TransferUtility,请注册 AWSS3TransferUtility使用不同的 key (最好是同一用户的相同 key )并使用该 key 进行查找。

关于swift - 具有标识符的后台 URLSession 已存在,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53764152/

相关文章:

xcode - UIPickerview 和 Core Data 有关系

swift - Swift 4 中的 KVO 监听器问题

ios - 前置摄像头图片的奇怪问题

docker - s3 安装在容器内。如何将其暴露给主机?

ios - 使用信号量从异步调用返回值

ios - NSURLSession backgroundSession 完成时额外的 API 调用

ios - 自定义 NSURLProtocol 与 NSURLSession

ios - 核心数据 : How do I delete all objects with an attribute in Swift?

scala - 使用 AWS s3 的分段上传 API 时出现内存不足问题

amazon-web-services - 无服务器框架和 AWS Step Functions(AWS 状态机)由上传到 S3 的文件触发