ios - 卸载 iOS 应用程序时删除钥匙串(keychain)

标签 ios swift security keychain

我已经阅读了几篇关于这个问题的帖子,例如 Delete keychain items when an app is uninstallediOS autodelete Keychain items after uninstall? .他们说,当您卸载应用程序时,它的 Keychain 不会被删除,但帖子可能会被弃用,这是当前的行为吗?

另一方面,如果 Keychain 在用户卸载应用程序时没有真正自动删除,我不清楚自己的方法。

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

最佳答案

尝试使用 UserDefaults 来存储一个 bool 值,用于跟踪何时将数据保存到钥匙串(keychain)。

例子:

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

然后在AppDelegate中的didFinishLaunchingWithOptionsMethod

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

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

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

关于ios - 卸载 iOS 应用程序时删除钥匙串(keychain),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41099718/

相关文章:

android - 如何重定向到移动应用程序?

ios - Firebase View Controller 的 Viewdidload 和观察方法未被调用,没有任何内容打印到控制台

ios - SWIFT 如何从 Google map GMAPAutocomplete 获取经纬度坐标?

swift - 指向 Swift 中最后一个数组元素的不安全指针

ios - 用 Dictionary 类型的参数声明的函数显示另一个参数类型

linux - 在 Swift 中使用函数定义结构体属性

database - SSDT : how to protect the password contained in the publish profile?

ios - xcode配置文件中有多个开发者帐户时如何导出一个开发者帐户

javascript - 谁能告诉我这些黑客试图在我的网站上做什么?

mysql - AWS EC2 安全组似乎没有申请公共(public) IP