当我将应用程序更新提交到AppStore时,更新configuration文件是否会影响钥匙串访问?

我有一个iPhone应用程序使用钥匙串authentication相关的存储。

我也有一个到期的configuration文件。

在钥匙串访问文档中指出:

在iPhone上,钥匙串权限取决于用于签署应用程序的供应configuration文件。 请确保始终在不同版本的应用程序中使用相同的configuration文件。

由于我的供应configuration文件到期,我将其更新(在configuration门户中),将其下载并双击,将其“安装”到XCode的组织者中。

在向应用程序商店提交应用程序的更新后,我基本上看到一个空的钥匙串(用户被要求重新login)。

我的问题是:更新configuration文件用于签署一个应用程序影响钥匙串访问时更新configuration文件被用来提交更新的应用程序? 该文档只是说使用“相同的configuration文件”,但不清楚是否更新的configuration文件算作一个不同的configuration文件(正如我上面所述的经验)。

是什么赋予了?

更新

在tc的答案帮助下解决。 查看提交给苹果公司的每个.ipas文件中的embedded.mobileprovision文件,发现已经过期的证书和configuration文件用于签署应用程序的版本x,并且使用不同的证书和configuration文件来签署版本x + 1应用程序(罪魁祸首:代码签名身份的XCode的“自动configuration文件select器”function)。

当开发人员使用不同的iOS开发人员计划帐户开发不相关的应用程序(在同一台计算机上,具有相同的OSX用户)时,第一个证书和configuration文件是剩余的。 跨多个iOS开发者计划账户的供应configuration文件显然全部存储在~/Library/MobileDevice/Provisioning Profiles ,所以它们都是XCode自动configuration文件selectfunction的候选者。

我通过select完全不同的分发configuration文件来改变代码签名标识,我错误地认为它是更新/有效版本的到期分发configuration文件,并提交了更新。 相同的应用程序,不同的证书,不同的configuration文件==空的钥匙串。 D'OH。

您允许使用的keychain-access-groups由授权中的keychain-access-groups确定,这些keychain-access-groups仅限于供应configuration文件中的keychain-access-groups的子集,由“捆绑种子”/“前缀“/(供应configuration文件中的ApplicationIdentifierPrefix ),在”App ID“中设置。

假设你已经保存了旧的提交的应用程序(或者从iTunes中获得.ipa ,这只是一个zip文件),请在新旧应用程序中查看embedded.mobileprovision (在terminal中应less Foo.app/embedded.mobileprovision做的伎俩,或者你可以在文本编辑器中打开它,虽然有时他们会select错误的行结尾)。 你正在寻找这样的东西(你可能会看到推/ iCloud的额外键):

  <key>Entitlements</key> <dict> <key>application-identifier</key> <string>A1B2C3D4E5.com.example.MyApp</string> <key>get-task-allow</key> <false/> <key>keychain-access-groups</key> <array> <string>A1B2C3D4E5.*</string> </array> </dict> 

您还可以查看您的应用程序签署的实际权利:

 codesign -d --entitlements - Foo.app/Foo | vis 

IIRC钥匙串访问组默认为例如A1B2C3D4E5.com.example.MyApp ,但是您可以将它设置为任何您希望提供的与A1B2C3D4E5.* (Xcode 4甚至具有良好的GUI权利编辑器)匹配的任何内容。 如果捆绑包前缀不同,那会导致您看到的问题。 我你可以改回来,只要你没有启用推/游戏中心/等。

只要你的应用程序的包ID没有改变,钥匙串不会有任何问题。

考虑到我们每年都必须更新我们的证书和分发configuration文件,如果这样做打乱了我们的应用程序的钥匙串访问将是混乱的。

我有一个应用程序已经在App Store超过4年。 它使用钥匙串。 它已经多年更新多次,多次更新configuration文件。 没有钥匙串问题。

对于其他人的search,我有一个不同的问题。 我遵循手动步骤辞职的IPA导致它没有权利,这意味着没有钥匙串访问。 所以我创build了一个脚本来辞职,但保留原来的权利。 我发布在http://baltaks.com/2013/08/resigning-enterprise-ios-apps并将保持更新,如果需要的话&#x3002;