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

时间:2016-12-12 11:21:02

标签: ios swift security keychain

我一直在阅读有关此问题的几篇帖子,例如Delete keychain items when an app is uninstallediOS autodelete Keychain items after uninstall?。他们说,当你卸载一个应用时,它的Keychain不会被删除,但这些帖子可能会被弃用,那是当前的行为吗?

另一方面,如果在用户卸载某个应用时并未真正自动删除Keychain,我自己也不清楚这样做的方法。

编辑:如果在卸载应用时未删除Keychain,那么所有剩余Keychain实际上会发生什么?系统没有处理吗?

2 个答案:

答案 0 :(得分:2)

从设备删除应用程序时,没有触发器来执行代码。对钥匙串的访问取决于用于签署应用程序的供应配置文件。因此,没有其他应用程序能够访问钥匙串中的此信息。

我认为你不需要删除它。我不确定如何删除它,但我相信如果你确实将keychain值设置为某些值,那么你也可以指定nil的值或只是空字符串""。但这不是很确定,只是假设。

希望它有所帮助!

答案 1 :(得分:2)

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

示例:

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

然后在didFinishLaunchingWithOptionsMethod的AppDelegate中

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

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

我也进行了广泛的搜索,这种解决方法是你能得到的最接近的。