Aws Cognito IOS войти в контроллер не отключается после представления заставки - PullRequest
0 голосов
/ 13 мая 2019

Я использую 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

Без добавления опций заставки процесс регистрации работает нормально

...