我有一个S3Service,它是一个单例,它管理所有与S3相关的上载和下载。 当我上传第一张图片时,它可以正常工作,但是如果我尝试连续上传一张图片,它会向我发出此警告,并且不会调用完成块。
标识符为
com.amazonaws.AWSS3TransferUtility.Identifier.TransferManager
的后台URLSession已经存在。
这是我上传方法的外观:
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")
}
})
}
答案 0 :(得分:3)
调用注册转移实用程序AWSS3TransferUtility.register(with: serviceconfig, forKey: KEY)
导致了上述问题。应该牢记两件事。
AWSS3TransferUtility
在每个应用程序会话中仅应注册一次。然后,我们可以使用AWSS3TransferUtility.S3TransferUtilityForKey
在需要的地方获取实例。
如果这些用于应用程序中的不同用户(例如,注册),并且如果我们想让AWSS3TransferUtility
与每个用户分开,请使用不同的密钥注册AWSS3TransferUtility
(最好是相同用户的相同密钥),然后使用该密钥进行查找。