TransferUtility.uploadData прекрасно работает с симулятором iOS, но не работает во время тестирования на реальном устройстве iOS13 - PullRequest
0 голосов
/ 10 ноября 2019

Я следовал некоторым учебникам из 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 голосов
/ 10 ноября 2019

Это похоже на разрешение.

Если вы вошли в свою учетную запись aws на устройстве, вы разрабатываете свое приложение, вы вошли как «admin» в фоновом режиме. Если вы запускаете свое приложение с реального устройства, которое не подключено к вашему iMac / MacBook, вы больше не входите в консоль aws как администратор. Разрешение по умолчанию запрещает доступ к вашей корзине для всех, кроме администратора (вас).

В целях тестирования установите открытые права доступа к корзине и повторите попытку.

...