“在iPhone上,Keychain权限取决于用于签署应用程序的配置文件。请确保在不同版本的应用程序中始终使用相同的配置文件。”
我对此没有问题,但我想测试一下,如果我提供了一个更新到我的应用程序在AppStore中,它仍然能够访问存储在钥匙串中的旧值。我尝试通过使用包含与原始版本相同的捆绑标识和产品名称的ad-hoc分发配置文件签署的版本来进行测试,但它无法访问钥匙串中的旧值。
唯一的选择是提交更新到AppStore并希望它能正常工作吗?
“在iPhone上,Keychain权限取决于用于签署应用程序的配置文件。请确保在不同版本的应用程序中始终使用相同的配置文件。”
我对此没有问题,但我想测试一下,如果我提供了一个更新到我的应用程序在AppStore中,它仍然能够访问存储在钥匙串中的旧值。我尝试通过使用包含与原始版本相同的捆绑标识和产品名称的ad-hoc分发配置文件签署的版本来进行测试,但它无法访问钥匙串中的旧值。
唯一的选择是提交更新到AppStore并希望它能正常工作吗?
这是一个好问题。
将某些数据存储在钥匙串中的主要原因之一是为了防止恶意用户访问它。单独来看,这是一个相当枯燥的句子,因此建议阅读有关如何访问该数据的内容。
访问钥匙串数据的另一种方式是创建一个与目标应用程序具有相同应用程序ID的恶意应用程序。苹果通过要求提供相同的配置文件来确保了这条路线的安全性。
所以,回答你的问题,你只能使用相同配置文件的更新测试钥匙串数据,即:
App Store到App Store实际上不是一个选择,因为那时已经太晚了(您的更新将上市)。因此,您需要删除您的应用商店应用程序并安装一个自由发布版本。然后重新创建您在钥匙串中的数据,然后升级到最新的自由发布版本并测试它是否有效。
当然,这需要您拥有当前在应用商店上的应用程序的已存档自由发布版本。如果您没有这个,那么就无法测试更新。
除非我错了,否则在应用商店更新应用程序时,您需要使用相同的配置文件。因此,由于您将使用相同的配置文件,因此您应该可以访问相同的钥匙串项目。
实际上,重要的不是配置文件,而是应用程序ID。特别是在创建应用程序ID时设置的Bundle Seed ID。Keychain访问受其管理。因此,只要您的配置文件使用具有相同Bundle Seed ID的应用程序ID,您就可以继续访问Keychain中的信息。我有几个这样的应用程序。
这使您能够创建一组应用程序,所有这些应用程序都可以访问相同的Keychain项目,只要您将它们设置为使用相同的Bundle Seed ID即可。因此,如果您创建了轻量级和专业版,则两者都可以访问相同的Keychain信息,同时保持用户默认值等内容的独立包标识。
SFHFKeychainUtils可能是您的不错选择。 它是一个访问钥匙串的包装器。 更多信息:SFHFKeychainUtils: http://www.ioslib.com/archives/sfhfkeychainutils/