Как запомнить устройства, использующие AWS Amplify SDK? - PullRequest
1 голос
/ 27 мая 2020

Я реализовал функцию регистрации / входа, используя AWS Amplify and swift, используя мои собственные контроллеры View вместо Drop-in auth. Проблема начинается, когда я выхожу из приложения и перезапускаю его. После того, как я это сделаю, пользователь больше не вошел в систему. Я установил запоминание устройств всегда в настройках пула пользователей. image of settings Кто нибудь сталкивался с этой проблемой? Вот моя функция, в которой пользователь получает подтверждение, и все работает правильно, кроме запоминания пользователя

    @objc func confirm(){
        print("confirm pressed")
        guard let verificationCode = verificationTextField.text else{
            return
        }
        AWSMobileClient.default().confirmSignUp(username: username, confirmationCode: verificationCode) { (signUpResult, error) in

            if let signUpResult = signUpResult{
                switch(signUpResult.signUpConfirmationState){
                case .confirmed:
                    AWSMobileClient.default().deviceOperations.updateStatus(remembered: true) { (result, error) in //This is where I try to save the users device
                        print("User is signed up and confirmed")
                        DispatchQueue.main.async {
                            let signedInTabBar = SignedInTabBarController()
                            self.view.window!.rootViewController = signedInTabBar
                        }
                    }
                case .unconfirmed:
                    print("User is not confirmed and needs verification via \(signUpResult.codeDeliveryDetails!.deliveryMedium) sent at \(signUpResult.codeDeliveryDetails!.destination!)")
                case.unknown:
                    print("Unexpected case")
                }
            }else if let error = error {
                print("\(error.localizedDescription)")
            }
        }

    }

1 Ответ

1 голос
/ 27 мая 2020

Как я правильно понимаю, вам нужно проверить, вошел ли пользователь в систему или нет. Для этого вам нужно добавить этот код в начало приложения или где бы вы ни проверяли статус пользователя:

AWSMobileClient.default().initialize { userState, error in
    OperationQueue.main.addOperation {
        if let error = error {
             AWSMobileClient.default().signOut()
            assertionFailure("Logic after init error: \(error.localizedDescription)")
        }

        guard let userState = userState else {
             AWSMobileClient.default().signOut()
             return
        }

        guard userState == .signedIn else {
            return
        }
    }
}
...