应用程序卸载后iphone keychain项目是否仍然存在?

Vla*_*mir 39 iphone objective-c keychain ios

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

[SFHFKeychainUtils storeUsername:@"User" andPassword:@"123"
                  forServiceName:@"TestService" updateExisting:YES error:&error];
Run Code Online (Sandbox Code Playgroud)

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

Sve*_*ven 31

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

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

您应该在删除应用时单独保留信息.删除应用时,您没有回调或删除钥匙串项的方法.

  • @Zennichimaro尽管你引用的段落说明了,如果你在权利文件的keychain-access-groups中指定了相同的keychain组id,你就可以共享你编写的两个应用程序之间的钥匙串.有关详细信息,请参阅Apple的文档`SecItemAdd()`.Apple的[GenericKeychain示例代码](https://developer.apple.com/library/ios/#samplecode/GenericKeychain/Introduction/Intro.html)演示了如何执行此操作. (8认同)
  • @Mihai Damian项目*可以*在应用程序之间共享,但默认情况下不是; 你必须设置访问组. (7认同)
  • "在iOS中,每个应用程序始终可以访问自己的钥匙串项目;永远不会要求用户解锁钥匙串.而在OS X中,任何应用程序都可以访问任何钥匙串项目,前提是用户授予权限,在iOS中,应用程序只能访问其自己的钥匙串物品." 请更正你的答案,这是误导!来源:https://developer.apple.com/library/ios/#documentation/security/conceptual/keychainServConcepts/02concepts/concepts.html (4认同)
  • 因此,我不希望在卸载应用程序后留在钥匙串中的信息可能意味着钥匙串只是存放它的错误位置,对吧? (2认同)