Ich habe den folgenden Code die Cognito ID über authentifizierte Benutzer in swift für ein iOS-App für das Erhalten: -Cognito getIdentityId() funktioniert nicht in swift für authentifizierte Benutzer
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"
}
}
wenn getCognitoIdentityId() in einem Stummel ViewController heißt, es gibt immer "DEFAULT_COGNITO_ID" zurück (ich betreibe es in einem Emulator). Wenn Sie über einen Debugger in den Code einsteigen, wird angezeigt, dass die asynchrone Task nicht ausgeführt wird (der gesamte Codeblock von if (task.error! = Nil)) wird umgangen.
Ich vermisse etwas denken Sie an
- es können, sind für Netzwerk/Asynchron-Anrufe Berechtigungen benötigt, die separat aktiviert in Cognito Identität Pool benötigt? sein muss
- gibt es Konfigurationen, die ich tun muss.
- Sind in Emulatoren async Aufgaben blockiert?
Bitte helfen. Ich bin neu in der schnellen Entwicklung.
Danke, ich machte etwas ähnliches in Android und es kam sofort zurück. Irgendwelche Empfehlungen zur Wartezeit für die Identitäts-ID? –
Android ist nicht asynchron, es wurde wahrscheinlich nur zwischengespeichert. Die Zeit wird von Gerät zu Gerät variieren, so dass es ein wenig raten kann, aber Sie können es gut genug Zeit. –
Nein, ich nehme eine explizite Anstrengung, um es in eine aysnc Aufgabe zu bringen. –