这是我试图让它工作但到目前为止没有成功的代码片段。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()
}
}
}