Swift 如何使用AWS Amplify SDK记住设备?
我使用AWS Amplify和swift实现了一个注册/登录功能,使用我自己的视图控制器而不是Drop-in-auth。一旦我退出应用程序并重新启动它,问题就开始了。在我这样做之后,用户不再登录。我已在用户池设置中将记住设备设置为“始终”。有人遇到过这个问题吗? 这是我的功能,用户得到确认,除了记住用户之外,其他一切都正常工作Swift 如何使用AWS Amplify SDK记住设备?,swift,amazon-web-services,aws-amplify,Swift,Amazon Web Services,Aws Amplify,我使用AWS Amplify和swift实现了一个注册/登录功能,使用我自己的视图控制器而不是Drop-in-auth。一旦我退出应用程序并重新启动它,问题就开始了。在我这样做之后,用户不再登录。我已在用户池设置中将记住设备设置为“始终”。有人遇到过这个问题吗? 这是我的功能,用户得到确认,除了记住用户之外,其他一切都正常工作 @objc func confirm(){ print("confirm pressed") guard let verifica
@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)")
}
}
}
如我所知,您需要检查用户是否登录。要执行此操作,您需要在应用程序的开始处或检查用户状态的任何位置添加此代码:
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
}
}
}
实现此代码后,我发现了另一个错误。每当我登录时,我都会打印这个func
print(AWSMobileClient.default().isSignedIn)
,即使我已登录,它也会返回false。