Я тоже испытывал ту же проблему на этой неделе.В последней документации , в частности в разделе initialization , вы увидите следующее:
Откройте AppDelegate вашего проекта Xcode или, возможно, в вашем View ControllerviewDidLoad () и вызовите процедуру инициализации
Итак, я сделал это, перейдя в AppDelegate и заменив:
return AWSMobileClient.sharedInstance().interceptApplication(application, didFinishLaunchingWithOptions: launchOptions)
На:
return true
Затем вviewDidLoad
в вашем главном UIViewController
вызовите процедуру инициализации в соответствии с документами:
import AWSMobileClient
override func viewDidLoad() {
super.viewDidLoad()
AWSMobileClient.sharedInstance().initialize { (userState, error) in
if let userState = userState {
print("UserState: \(userState.rawValue)")
} else if let error = error {
print("error: \(error.localizedDescription)")
}
}
}
После этого вы сможете использовать новый слушатель состояния пользователя для логики аутентификации вашего приложения:
AWSMobileClient.sharedInstance().addUserStateListener(self) { (userState, info) in
switch (userState) {
case .guest:
print("user is in guest mode.")
case .signedOut:
print("user signed out")
case .signedIn:
print("user is signed in.")
case .signedOutUserPoolsTokenInvalid:
print("need to login again.")
case .signedOutFederatedTokensInvalid:
print("user logged in via federation, but currently needs new tokens")
default:
print("unsupported")
}
}
И теперь вы также можете использовать getTokens
:
AWSMobileClient.sharedInstance().getTokens { (tokens, error) in
if let error = error {
print("Error getting token \(error.localizedDescription)")
}
else if let tokens = tokens {
print("id token: \(tokens.idToken!.tokenString!)")
print("access token: \(tokens.accessToken!.tokenString!)")
}
}
Надеюсь, это поможет!