如果没有用户登录,AWS Cognito iOS 尝试转到初始页面而不是登录页面

AWS Cognito iOS trying to goto splash page instead of login page if there is no user logged in

我目前正在尝试将 Amazon Cognito 与我的 iOS 应用程序集成。我让应用程序委托符合 AWSCognitoIdentityInteractiveAuthenticationDelegate 协议,我知道当用户未登录时,会调用 startPasswordAuthentication() 函数,我必须 return 登录视图控制器。但是,如果用户未登录,我希望将用户定向到启动页面而不是登录页面。启动屏幕可以选择登录或注册。我尝试仅在 startPasswordAuthentication() 方法中显示启动画面并 returning loginViewController,但随后 Amazon Cognito 登录功能不起作用。有什么解决方法吗?

如果您对 Cognito 用户调用 getDetails 或 getSession,它将触发 startPasswordAuthentication 代码流,正如您所发现的,它不允许您 return 任何未实现 AWSCognitoIdentityPasswordAuthentication 的东西。在对用户调用 getDetails 之前,您需要处理启动画面的显示。

A​​WSCognitoIdentityUser 对象具有 a property 来测试用户是否已登录。

let pool = AWSCognitoIdentityUserPool(forKey: AWSCognitoUserPoolsSignInProviderKey)
let user = pool?.currentUser()
if let user = user, !user.isSignedIn {
    // present your splash screen
}

例如,您可以在 User Pools Sample inside the refresh() method of the UserDetailTableViewController 中尝试这个。