当我运行应用程序的Xcode构建并启动应用商店构建时,我注意到了一些奇怪的东西。如果我运行xcode构建(使用开发证书),然后通过应用商店运行我的应用程序(使用生产证书),则出现以下对话框,提示我
MyApp要使用钥匙串中“ com.myApp”中存储的机密信息。
当我先运行应用商店版本,然后运行Xcode开发版本时,也会出现此对话框。我相信会出现此对话框,因为两个内部版本都有不同的证书(可能是错误的)。
我最大的担心是用户更新了应用程序,用户会看到此对话框吗?
不确定这是否重要,但这是我将数据保存到钥匙串的方式。
[[A0SimpleKeychain keychain] setString:string forKey:@"key"];
答案 0 :(得分:5)
Apple的代码签名指南提供了答案。
我相信会出现此对话框,因为两个内部版本都有不同的证书
正确。参见Understanding the Code Signature:
最重要的内部需求是指定需求或DR。该规则告诉评估系统如何识别特定的代码段。具有(并已成功验证)相同DR的任何两段代码都被视为同一代码。
...
macOS的某些部分不关心签名者的身份。他们只关心应用程序是否经过有效签名和稳定。稳定性是通过DR确定的,而不取决于所使用的证书颁发机构的性质。钥匙串系统和家长控制就是这种用法的例子。
运送和更新您的产品
用户的系统认为您产品的新版本是 与先前版本相同的程序。例如,钥匙串服务 不能区分您的程序的旧版本和新版本 因为两个都签名,并且唯一标识符保持不变。
使用其他证书对代码进行签名会使系统将其视为其他应用程序。只要您在版本之间使用相同的证书对发行版进行签名,就可以了。