我有一个 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/