Amazon web services AWS Cognito即使在删除并重新安装应用程序后也会自动登录

Amazon web services AWS Cognito即使在删除并重新安装应用程序后也会自动登录,amazon-web-services,aws-sdk,amazon-cognito,aws-cognito,aws-sdk-ios,Amazon Web Services,Aws Sdk,Amazon Cognito,Aws Cognito,Aws Sdk Ios,我最近用Cognito用户池创建了一个AWS Mobile hub项目,当我登录时,它会记住登录的用户,一旦我删除应用程序(不注销)并重新安装应用程序,它会自动登录到以前的帐户,如何防止该问题 另外,我使用的是最新的AWS Mobile Hub iOS SDK,这是因为Cognito框架将登录信息存储在密钥链中,即使删除了应用程序,该密钥链也会持续存在。解决此问题的一种方法是在应用程序启动时检查应用程序是否为新安装,如果当前用户已登录,则注销 为了检查我的应用程序中是否有新的安装和更新,我通常将

我最近用Cognito用户池创建了一个AWS Mobile hub项目,当我登录时,它会记住登录的用户,一旦我删除应用程序(不注销)并重新安装应用程序,它会自动登录到以前的帐户,如何防止该问题


另外,我使用的是最新的AWS Mobile Hub iOS SDK,这是因为Cognito框架将登录信息存储在密钥链中,即使删除了应用程序,该密钥链也会持续存在。解决此问题的一种方法是在应用程序启动时检查应用程序是否为新安装,如果当前用户已登录,则注销

为了检查我的应用程序中是否有新的安装和更新,我通常将内部版本号存储在
UserDefaults
中,并检查它是否为
nil
或在应用程序启动时是否已更改:

func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplicationLaunchOptionsKey: Any]?) -> Bool {
    let previousBuild = UserDefaults.standard.string(forKey: "build")
    let currentBuild = Bundle.main.infoDictionary!["CFBundleVersion"] as! String
    if previousBuild == nil {
        //fresh install
        //logout of current user
    } else if previousBuild != currentBuild {
        //application updated
    }
    UserDefaults.standard.set(currentBuild, forKey: "build")

    return true
}