Я использую aws cognito для аутентификации пользователя в моем приложении ios, и я реализовал AWSCognitoAuthenticationDelegate, который возвращает экран входа, когда пользователь не вошел в систему.Но перед тем, как представить экран входа в систему, я хочу представить еще один экран, на котором пользователь может войти или зарегистрироваться.перед вызовом getDetails () я представляю заставку, и она появляется, но когда появляется экран входа и я нажимаю на кнопку входа, ничего не происходит.DidCompleteStepWithError и getDetails не получают вызов
мой метод входа выглядит следующим образом:
@IBAction func signInTapped(_ sender: UIButton) {
if (usernameTextField.text != nil && passwordTextfield.text != nil) {
let authDetails = AWSCognitoIdentityPasswordAuthenticationDetails(username: self.usernameTextField.text!, password: passwordTextfield.text!)
self.passwordAuthenticationCompletion?.set(result: authDetails)
print("checking auth details")
activityIndicator.startAnimating()
} else {
let alertController = UIAlertController(title: "Missing information",
message: "Please enter a valid user name and password",
preferredStyle: .alert)
let retryAction = UIAlertAction(title: "Retry", style: .default, handler: nil)
alertController.addAction(retryAction)
}
}
Я представляю экран параметров заставки со входом, кнопки регистрации в viewDidLoad viewcontroller, который отображается после успешного завершениявойдите как:
self.pool = AWSCognitoIdentityUserPool(forKey: AWSCognitoUserPoolsSignInProviderKey)
if (self.user == nil) {
self.user = self.pool?.currentUser()
}
if self.user != nil && !user!.isSignedIn {
let vc = self.storyboard?.instantiateViewController(withIdentifier: "splashScreen") as? SplashScreenViewController
self.present(vc!, animated: true, completion: nil)
}
self.refresh()
И мои методы getDetails и didCompleteStepWithError в VC входа в систему:
public func getDetails(_ authenticationInput: AWSCognitoIdentityPasswordAuthenticationInput, passwordAuthenticationCompletionSource: AWSTaskCompletionSource<AWSCognitoIdentityPasswordAuthenticationDetails>) {
print("Get details called")
self.passwordAuthenticationCompletion = passwordAuthenticationCompletionSource
DispatchQueue.main.async {
if (self.usernameText == nil) {
// self.usernameText = authenticationInput.lastKnownUsername
}
}
}
public func didCompleteStepWithError(_ error: Error?) {
DispatchQueue.main.async {
if let error = error as NSError? {
self.activityIndicator.stopAnimating()
let alertController = UIAlertController(title: "Incorrect Credentials", message: "Those credentials don't look right. Please try again.", preferredStyle: .alert)
let retryAction = UIAlertAction(title: "Retry", style: .default, handler: nil)
alertController.addAction(retryAction)
self.present(alertController, animated: true, completion: nil)
} else {
print("completed step without error")
self.activityIndicator.stopAnimating()
self.dismiss(animated: true, completion: {
let vc = self.storyboard?.instantiateViewController(withIdentifier: "splashScreen") as? SplashScreenViewController
vc?.dismiss(animated: true, completion: nil)
})
}
}
}
мне нужно реализовать те же протоколы на экране-заставке, что и в Signin VC или Iнеобходимо интегрировать кнопку регистрации в signinVC, как показано в примере приложения aws cognito ios swift
Без добавления опций заставки процесс регистрации работает нормально