我一直在阅读有关此问题的几篇帖子,例如Delete keychain items when an app is uninstalled和iOS autodelete Keychain items after uninstall?。他们说,当你卸载一个应用时,它的Keychain
不会被删除,但这些帖子可能会被弃用,那是当前的行为吗?
另一方面,如果在用户卸载某个应用时并未真正自动删除Keychain
,我自己也不清楚这样做的方法。
编辑:如果在卸载应用时未删除Keychain
,那么所有剩余Keychain
实际上会发生什么?系统没有处理吗?
答案 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数据。
我也进行了广泛的搜索,这种解决方法是你能得到的最接近的。