【发布时间】:2020-11-22 08:17:57
【问题描述】:
这是一个代码 sn-p 我试图让它工作但到目前为止没有成功。 initialize() 工作正常,但 getUserAttributes() 没有触发回调。不仅 getUserAttributes(),甚至其他 AWS 调用(例如 getTokens())也没有触发。相信,在 AWS 代码内部的某些地方,它被阻塞了。如果我注释掉 initialize() 则调用 getUserAttributes() 回调。尝试了 DispatchQueue/DispatchGroup 的各种选项,没有帮助。
AWSMobileClient pod 版本 2.12.7。
import Foundation
import AWSMobileClient
struct AWSUser {
static let serialQueue = DispatchQueue(label: "serialQueue")
static let group = DispatchGroup()
static func initialize() -> Void {
DispatchQueue.global(qos: .background).async {
AWSInitialize()
getAWSUserAttributes()
}
}
static func AWSInitialize() -> Void {
group.enter()
AWSMobileClient.default().initialize { (userState, error) in
// error handling ...
switch userState {
case .signedIn:
//getAWSUserAttributes()
break
default:
break
}
group.leave()
}
}
static func getAWSUserAttributes() {
group.wait()
group.enter()
AWSMobileClient.default().getUserAttributes { (attrs, error) in
// NEVER REACHED!!!
// BUT WORKS IF AWSMobileClient.default().initialize() is commented out
group.leave()
}
}
}
【问题讨论】:
标签: ios swift asynchronous amazon-cognito aws-sdk-ios