我最近创建了一个带有Cognito用户池的AWS Mobile中心项目,当我登录时它记住了登录用户,一旦我删除了应用程序(没有登出)并重新安装应用程序,它会自动登录到以前的帐户,如何防止这个问题?
P.S - 我正在使用最新的AWS Mobile Hub iOS SDK
答案 0 :(得分:3)
之所以会发生这种情况,是因为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
}