2014-09-04 60 views
9

我注意到当我在Xcode中为我的iOS应用程序启用钥匙串共享Xcode说它会“将钥匙串共享权利添加到您的应用程序ID”,并且它似乎连接到我的帐户,因为我得到一个弹出窗口询问哪个开发人员帐户使用。然而,在开发者门户网站上,我的任何应用程序ID都没有明显的变化,我的供应配置文件也没有像我更改应用程序的权利时那样失效。钥匙串共享不是在App ID中启用/禁用的可见选项。启用钥匙串共享是否会改变您的AppID?

有没有人知道Xcode在这里的封面是干什么的?权利文件的本地更改很明显,但我想了解它的App ID方面。

回答

10

iOS中的每个钥匙串项目都包含一个称为钥匙串访问组的属性。 iOS应用只能访问其有权访问的那些钥匙串项目。此许可权来自签名时加入应用程序的代码签名权利。

默认情况下,应用程序只能访问钥匙串访问组与匹配应用程序标识符代码签名权利的钥匙串项目。但是,如果开发人员想要在其应用程序中共享钥匙串项目,则可以添加自定义钥匙串访问组代码签名权利,以指定应用程序可以访问的钥匙串访问组阵列。

正常情况下,您不需要设置访问组属性kSecAttrAccessGroup即可创建密钥链项目。在这种情况下,钥匙串服务会自动将该属性设置为默认值。如果没有钥匙串访问组授权,则缺省值是应用程序标识符权利的值。否则,默认值是keychain-access-group权利中第一个数组元素的值。

当在目标设置窗格上使用Xcode功能编辑器打开钥匙串共享时,Xcode会在构建时将所需的App ID前缀(团队ID)添加到任何列出的钥匙串组项目的前面。您可以看到,在由生成设置$(AppIdentifierPrefix)表示的生成授权文件中。