Age*_*ith 1 amazon-s3 nsurlsession swift awss3transferutility aws-sdk-ios
我有一个 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")
}
})
}
Run Code Online (Sandbox Code Playgroud)
对注册传输实用程序的调用AWSS3TransferUtility.register(with: serviceconfig, forKey: KEY)导致了上述问题。有两件事应该牢记在心。
每个应用程序会话只AWSS3TransferUtility应注册一次。然后我们就可以AWSS3TransferUtility.S3TransferUtilityForKey在需要的地方获取实例。
如果这些是针对应用程序内的不同用户(例如注册),并且如果我们想要AWSS3TransferUtility为每个用户保持独立,请AWSS3TransferUtility使用不同的密钥(最好是同一用户的相同密钥)注册并使用该密钥进行查找。