40

我正在玩 idandersen 的scifihifi-iphone钥匙串代码,遇到了以下行为 - 我设置了密码,比如说

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

然后从设备中删除测试应用程序并重新安装 - 先前设置的密码似乎保留在钥匙串中......
这是预期的行为吗?有没有办法确保我设置的密码会被应用程序删除?

4

2 回答 2

34

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

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

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

于 2010-09-09T21:01:12.783 回答
4

编辑: 他们最终恢复了我的答案中描述的行为,所以在每个人都离开那个版本范围之前,这不应该再发生了。

不幸的是,情况不再如此。自 iOS 10.3 起已更改。

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

应用程序创建的钥匙串项目在应用程序被删除后仍然存在,这从来都不是 API 合同的一部分。这一直是一个实现细节。

请参阅此处的参考资料

于 2018-01-23T15:50:32.327 回答