Вот фрагмент кода, который я пытаюсь заставить работать, но пока безуспешно. 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()
}
}
}