卸载iOS应用程序时删除钥匙串

App*_*Dev 3 security keychain ios swift

我一直在阅读有关此问题的几篇文章,例如卸载应用程序时删除钥匙串项目卸载后 iOS 自动删除钥匙串项目?。他们说,当您卸载应用程序时,它Keychain不会被删除,但帖子可能会被弃用,这是当前的行为吗?

另一方面,如果Keychain用户卸载应用程序时没有真正自动删除,我不清楚自己该如何执行此操作。

编辑:如果Keychain卸载应用程序时未删除,所有这些残留实际上会发生什么Keychain?系统不处理吗?

hoo*_*ooo 6

尝试使用 UserDefaults 存储一个布尔值,用于跟踪数据何时保存到钥匙串。

例子:

func someFunctionThatSavesToKeychain {
    // Save to keychain
    UserDefaults.standard.set(true, forKey: "isSavedToKeychain")
    // Do other stuff
}
Run Code Online (Sandbox Code Playgroud)

然后在 AppDelegate 中的 didFinishLaunchingWithOptionsMethod 中

func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplicationLaunchOptionsKey: Any]?) -> Bool {
    if !UserDefaults.standard.bool(forKey: "isSavedToKeychain") {
        // Delete data from Keychain
    }
}
Run Code Online (Sandbox Code Playgroud)

由于 UserDefaults 在应用程序卸载时被清除,因此下次用户安装应用程序时,该键值将消失,因此在启动时,您的 AppDelegate 将删除残留的钥匙串数据。

我也进行了广泛的搜索,这个解决方法是您可以获得的最接近的解决方法。