应用程序标识符授权值已更改?

Posted

技术标签:

【中文标题】应用程序标识符授权值已更改?【英文标题】:Application Identifier Entitlement Value has Changed? 【发布时间】:2014-05-21 19:34:21 【问题描述】:

当我将我的应用程序提交到应用商店时,我刚刚收到此警告,这只是警告,而不是错误。这个应用之前是从另一个开发者账户转移到我的账户的,所以App ID的前缀被改变了。我认为这应该是不可避免的,但是既然我得到了这个警告,它实际上对我的应用有什么影响呢?哪些钥匙串访问会丢失?

【问题讨论】:

我遇到了同样的问题....任何解决方案? @hardikhadwani:我遇到了同样的问题。你找到什么了吗? 我回答了here 【参考方案1】:

您是否已将应用从另一个开发者帐户转移到您的帐户?之前的配置 ID 显然会有所不同。

更新 - 澄清

我注意到这个答案获得了很多关注,所以我将对其进行编辑,以包括我对下面 cmets 的进一步解释。

基本上,您的应用程序的先前版本将不再能够访问钥匙串以保存密码等安全字符串(如果它包含此功能)。这是因为用于签名的分发/配置文件包含的 ID 与您在新分发/配置文件中使用的 ID 不同,因为您已将应用从以前的帐户转移到新帐户。

但是,使用最新分发/配置文件签名的任何新版本的应用都可以正常访问钥匙串,以便在需要此功能时保存安全数据,因为它们是使用分发/配置文件签名的包含该应用的最新应用 ID。

【讨论】:

好吧,与应用程序的最后所有者相比,用于分发应用程序版本的配置文件的包标识符基本上是不同的。因此,说您失去钥匙串访问权限意味着您的应用程序使用 ios 钥匙串来存储密码等安全数据,它将无法再这样做。但除此之外,它应该可以正常工作。我遇到了和你一样的问题,因为我的应用从另一个开发者帐户转移到了我的新帐户。 好的,我明白了。谢谢。 解决这个问题的确切方法是什么? 我什至会问:开发人员可以对这个警告做些什么吗? 嘿,这说明了很多,但我仍然遇到试飞问题。除非用户先手动删除 App Store 版本,否则新传输的应用程序不会安装在 App Store 版本之上。新版本在 App Store 上架后会成为问题吗?【参考方案2】:

警告通知您更新后的应用将无法访问之前保存在钥匙串中的项目。您的应用程序的旧版本仍然可以访问和存储钥匙串中的项目,就像新版本一样。但是这两个版本不能共享钥匙串中的信息。

总而言之,一旦用户更新到新版本,保存在钥匙串中的所有数据都将丢失。存储在 UIPasteboard 中的所有信息也将丢失。

如果出现以下情况,您会看到此消息:

应用程序已转移到您的帐户,您是第一次更新它。在这种情况下,您无法阻止警告(和副作用)。

您的应用在 2011 年 6 月之前添加到 iTunes Connect,并且您最近更新了该应用使用的配置文件。您的旧配置文件使用通配符 (*) 应用程序 ID,而新配置文件现在使用特定应用程序 ID,或者相反(不太可能)。在后一种情况下,您可以切换回并避免警告(在 Xcode 中选择正确的配置文件)。在另一种情况下,您的应用可能需要访问 Game Center、推送通知(或通配符应用 ID 不允许您使用的任何服务)等服务,而您无法避免警告。

如果您想了解更多详细信息,该警告与 App ID 前缀由 Apple 提供且无法更改这一事实有关。检查 Apple 的“证书、标识符和配置文件”页面(https://developer.apple.com/account/ios/identifiers/bundle/bundleList.action - 您需要登录)中的“应用程序 ID”部分,按一个 ID 并查看“前缀”字段。您也可以查看 Apple 的 Technical Note 2311 https://developer.apple.com/library/ios/technotes/tn2311/_index.html

最后,您可以通过更改配置文件的钥匙串访问组 (keychain-access-groups) 字段来避免警告。这不起作用,因为 Apple 不允许您为 App ID 和钥匙串访问组使用不同的前缀。

【讨论】:

这是正确答案。不正确的人被接受并获得了如此多的支持,这真的很奇怪。【参考方案3】:

由于 iOS 8.1.3 中更严格的安全性,这比警告所暗示的要严重得多;见https://developer.apple.com/library/ios/technotes/tn2319/_index.html#//apple_ref/doc/uid/DTS40013778-CH1-ERRORMESSAGES-UPGRADE_S_APPLICATION_IDENTIFIER_DOES_NOT_MATCH_THE_INSTALLED_APP。似乎不匹配导致无法升级到新版本。当我尝试通过 Xcode 进行更新时,它会在设备控制台中出现错误,就像技术说明中那样:“升级的应用程序标识符授权字符串 [....] 与已安装应用程序的应用程序标识符字符串不匹配 [... .];拒绝升级。”尝试通过 iTunes 更新似乎静默失败。

我希望答案只是“这个错误只是表明 Xcode 选择了错误的配置文件”,如 https://developer.apple.com/library/ios/technotes/tn2318/_index.html#//apple_ref/doc/uid/DTS40013777-CH1-TNTAG65 中所示。但我上次提交我的应用程序是在很多 Xcode 版本之前,找到合适的版本可能是一个挑战。

注意措辞“Xcode 选择了错误的配置文件”;要确保它选择了认为您选择的配置文件,请单击存档验证对话框中所选配置文件的截断名称旁边的箭头。要仔细检查这一点,请将已知错误(我无意中使用了丢失的图标)提交到 App Store,以便您查看是否出现警告。

【讨论】:

以上是关于应用程序标识符授权值已更改?的主要内容,如果未能解决你的问题,请参考以下文章

选项值已更改 - ODBC 错误 2169

内存映射 IO - IO 设备如何知道值已更改?

使用构造函数将数组传递给对象后,值已更改(在 c++ 中)。我想不通为啥

UploadReadaheadsize 值已更改,但未解决 Request Entity too large 错误

Gtkmm ListStore,如何在其中一行中捕获该值已更改?

由于应用程序标识符授权,应用程序安装失败