如何在通过AppStore更新后测试对keychain属性的访问?

在“钥匙串服务编程指南”中,它说明了以下内容:

“在iPhone上,Keychain权利取决于用于签署应用程序的配置文件。确保在不同版本的应用程序中始终使用相同的配置文件。”

哪个我没有问题,但我想测试一下,如果我在AppStore中为我的应用程序提供更新,它仍然可以访问存储在钥匙串中的旧值。 我尝试通过使用以ad-hoc分发配置文件签名的版本更新应用程序进行测试,该版本包含与原始版本相同的软件包ID和产品名称,但无法访问密钥链中的旧值。

是将更新提交到AppStore并希望它能够运行的唯一选择吗?

这是一个很好的问题。

您可能希望在钥匙串中存储某些数据的主要原因之一是防止恶意用户访问它。 这本身就是一个非常干的句子所以我建议阅读有关某人如何访问该数据的内容 。

访问钥匙串数据的另一种方法是使用与目标应用程序相同的应用程序ID创建恶意应用程序。 Apple通过要求配置文件相同来确保此路由。


因此,要回答您的问题,您只能从相同的配置文件中测试更新中的钥匙串数据,即

  1. 临时特设
  2. App store到app store。

应用程序商店到应用程序商店不是一个真正的选择,因为那时为时已晚(您的更新将在市场上)。 因此,您需要删除app store应用并安装临时版本。 然后在钥匙串上重新创建数据,然后更新到最新的临时版本并测试它是否有效。

当然,这需要您拥有当前在app store中存储的应用的存档临时版本。 如果您没有这个,那么就无法测试更新。

它实际上不是重要的配置文件,而是应用程序ID。 特别是您在创建应用程序ID时设置的Bundle Seed ID。 钥匙串访问受其控制。 因此,只要您的个人资料使用具有相同捆绑种子ID的应用ID,您就可以继续访问钥匙串中的信息。 我有一些应用程序可以做到这一点。

这允许您创建一组应用程序,只要您将它们设置为使用相同的Bundle Seed ID,就可以访问相同的Keychain项目。 因此,如果您执行light和pro版本,他们都可以访问相同的keychain信息,同时为用户默认值等内容维护单独的bundle标识。

除非我弄错了,要更新app store中的应用,您需要使用相同的配置文件。 因此,由于您将使用相同的配置文件,因此您应该可以访问相同的钥匙串项。

SFHFKeychainUtils可能是您不错的选择。 它是访问钥匙串的包装器。 更多关于:SFHFKeychainUtils: http : //www.ioslib.com/archives/sfhfkeychainutils/