transferUtility.uploadData与iOS模拟器完美兼容,但在实际设备iOS13上进行测试时无法正常工作

时间:2019-11-10 10:37:46

标签: swift amazon-s3 awss3transferutility

我已经按照https://www.youtube.com/watch?v=UMgApUhg7ic的一些教程将图片上传到我的s3存储桶中。

本教程可与iOS模拟器完美配合,但不适用于我测试的iphone7。我已经写了一些调试代码来找出导致问题的原因,但是没有一个出现。

我已经搜索了一段时间,但都没有提及我的问题。我的代码在实际的设备上而不是在模拟器上无法工作吗?

AppDelegate.swift

let AWS_Pool_ID = Bundle.main.object(forInfoDictionaryKey: "AWS_Pool_ID") as! String
let credentialsProvider = AWSCognitoCredentialsProvider(regionType:.APNortheast2, identityPoolId: AWS_Pool_ID)
let configuration = AWSServiceConfiguration(region:.APNortheast2, credentialsProvider:credentialsProvider)
AWSServiceManager.default().defaultServiceConfiguration = configuration

UploadViewController.swift

let transferUtility = AWSS3TransferUtility.default()
let imageData = self.image.jpegData(compressionQuality: 1.0)
let imageName = UUID().uuidString+".jpg"
let bucketName = "hello-world-bucket-name"
let progressBlock:AWSS3TransferUtilityProgressBlock = { task,progess in
    DispatchQueue.main.async {
        progressView.progress = Float(progess.fractionCompleted)
    }
}

let expression = AWSS3TransferUtilityUploadExpression()
expression.progressBlock = progressBlock
transferUtility.uploadData(imageData!, bucket: bucketName, key: imageName, contentType: "image/jpeg", expression: expression, completionHandler: { task,error in
    print("transferutility works")
    if let error = error {
        print(error)
    } else {
        let imageURL = "https://\(bucketName).s3.ap-northeast-2.amazonaws.com/\(imageName)"
        self.submitData.uploads = [imageURL]
        print(URL(string:imageURL)!)
    }
})

1 个答案:

答案 0 :(得分:0)

这听起来像是一个许可问题。

如果您在设备上登录了aws帐户,则说明您正在开发应用程序,则在后台以“ admin”身份登录。 如果您从未连接到iMac / MacBook的真实设备启动应用程序,则您将不再以管理员身份登录aws控制台。 默认情况下,该权限会拒绝除admin(you)之外的任何人对存储桶的访问。

出于测试目的,将存储桶权限设置为public,然后重试。