2010-09-08 63 views
37

我与idandersen的钥匙串scifihifi-iphone代码玩耍,遇到了以下行为 - 我使用设置的密码,说iphone keychain项目在应用程序卸载后仍然存在?

[SFHFKeychainUtils storeUsername:@"User" andPassword:@"123" 
        forServiceName:@"TestService" updateExisting:YES error:&error]; 

然后从设备中删除测试应用程序,并重新安装 - 所设定的密码似乎仍然在钥匙链...
它是预期的行为?有没有办法确保我设置的密码将被删除与应用程序?

回答

30

是的,这是预期的和正确的行为。

一些钥匙串项目可能与您控制的其他应用程序(共享相同的钥匙串项目访问组)共享。

当你的应用程序被删除时,你应该只保留信息。在删除您的应用程序时,您没有回拨或删除钥匙串项目的方法。

+2

因此,我不希望信息留在应用程序卸载后的钥匙串可能意味着钥匙串是存储它的错误地方,对吧? – Vladimir 2010-09-09 21:34:02

+7

@Mihai Damian商品*可以*在应用程序之间共享,但不是默认情况下;你必须设置访问组。 – James 2011-05-05 18:22:26

+0

它就像UIPasteboard是如何实现的。私有共享 – 2012-02-15 19:53:07

1

不幸的是,现在不是这样了。从iOS 10.3开始已经改变了。

这是iOS 10.3中为保护用户隐私而进行的故意更改。可以识别用户的信息不应该在创建它的应用程序被删除后留在设备上。

它从来不是API合约的一部分,应用程序创建的钥匙串项目 将在应用程序被移除时存活。这有 一直是一个实现细节。

查看reference here

相关问题