38

我正在寻找有关 iOS 钥匙串项目的文档。我的具体问题是钥匙串项目是否能在应用程序卸载和重新安装周期中存活下来。自 iOS 4(甚至可能是 iOS 3)以来,它似乎就是这样工作的,但我找不到任何来自 Apple 的文档说明这实际上应该以这种方式工作。

我想弄清楚的是我是否可以信任(不是“希望”或“猜测”)钥匙串中的项目将在应用程序卸载后继续存在。

编辑:我意识到正如 Daij-Djan 指出的那样,这个问题有点不清楚。我正在寻找的是支持众所周知的行为的官方文档。

更新 2017-04-04:请参阅下面的答案,iOS 10.3 beta 中的行为变化。它在 iOS 10.3 中照常工作,但在未来的版本中可能会发生变化。

4

3 回答 3

21

我在 Apple 开发者论坛上四处寻找,一位 Apple 开发者(eskimo1,又名 Quinn)在 2012 年 8 月 27 日表示,这是当前的行为,但据他所知,这是 /documented/ 行为,所以这可能会改变未来。他还说,删除共享钥匙串项目总是很棘手,这也是尚未解决的原因之一。

所以我想这让问题悬而未决:没有明确的答案。它没有记录在案,并且可以随时更改。依赖它可能会在未来引起问题。

2017 年 4 月 4 日更新:

iOS 10.3测试版中,应用程序的钥匙串信息会在应用程序被卸载时被删除,但这种行为似乎已在最终的 10.3 版本中被删除。在Apple 文档中,建议这即将改变,我们不应该依赖在应用程序卸载后完整的钥匙串访问数据。另请参阅iOS 10.3 beta 3 不会保留 KeychainItem 的数据

于 2013-09-22T13:55:25.473 回答
8

也许这就是您正在寻找的。
苹果文档

注意:在 iPhone 上,钥匙串权限取决于用于签署您的应用程序的配置文件。确保在应用程序的不同版本中始终使用相同的配置文件。

于 2013-09-20T08:52:16.873 回答
6

是他们会。

请参阅我的相应问题:

如何找出用户第一次购买/安装应用程序的时间(可能没有 UDID?)


照我看来:

“官方”暗示了钥匙串适用于多个应用程序的事实......并且它“属于”操作系统:

苹果文档

钥匙串是一个加密的容器,用于保存多个应用程序和安全服务的密码。

=> 因此钥匙串在应用程序中存在

一个钥匙串项目可以在多个应用程序之间共享

于 2013-09-20T07:47:19.373 回答