我有以下代码通过swift中的未经身份验证的用户获取Cognito ID以获取IOS应用: -
import Foundation
import AWSCore
import AWSCognito
class CognitoInit {
func getCognitoIdentityId() -> String {
let credentialsProvider = AWSCognitoCredentialsProvider(regionType:.USEast1,
identityPoolId:"My_idenitity_pool_id_in_aws")
let configuration = AWSServiceConfiguration(region:.USEast1, credentialsProvider:credentialsProvider)
AWSServiceManager.defaultServiceManager().defaultServiceConfiguration = configuration
credentialsProvider.getIdentityId().continueWithBlock { (task: AWSTask!) -> AnyObject! in
if (task.error != nil) {
return task.error?.localizedDescription
}
else {
// the task result will contain the identity id
return task.result
}
return nil
}
return "DEFAULT_COGNITO_ID"
}
}
当调用存根ViewController中的getCognitoIdentityId()时,它总是返回" DEFAULT_COGNITO_ID"(我在模拟器中运行它)。通过调试器进入代码会发现async任务不在内部运行(来自if(task.error!= nil)的整个代码块{返回nil被绕过。
我错过了什么。我能想到的事情
请帮忙。我是快速发展的新手。
答案 0 :(得分:1)
听起来它可能只是该游戏中的异步特性。您可以完全按照documentation中的描述尝试该示例,等待几秒钟,然后尝试通过
获取身份IDcredentialsProvider.identityId
看看会发生什么?因为它是异步的,所以以这种方式设置它将不会像你希望的那样工作,我想。您需要事先启动异步调用。