我将应用程序提交到应用程序商店时收到此警告,这只是警告,而不是错误。此应用程序之前从另一个开发人员帐户转移到我的帐户,因此应用程序ID的前缀已更改。我认为这应该是不可避免的,但是因为我收到此警告,它实际上对我的应用程序有什么影响?钥匙串访问会丢失什么?
答案 0 :(得分:35)
您在旧团队下上传的应用程序的上一个版本现在转移到新团队将不会受到任何影响。这是因为它使用与应用程序标识符old_team_prefix.app_id
匹配的配置文件进行签名,并且它将对应于具有相同ID的钥匙串。
但是,只要您上传使用新团队的个人资料签名的新版应用,该应用的新版本就无法读取与old_team_prefix.app_id
相关联的钥匙串。这是因为新应用程序使用观察new_team_prefix.app_id
的个人资料进行签名。
这意味着当第一个新更新发布并且用户更新到此版本(最终是所有用户)时,将会有不可避免的 one time loss of keychain data。
答案 1 :(得分:14)
警告会通知您,更新后的应用将无法访问以前保存在钥匙串中的项目。您的应用的旧版本仍然可以访问和存储钥匙串中的项目,就像新版本一样。但是,这两个版本无法在钥匙串中共享信息。
总之,一旦用户更新到新版本,保存在钥匙串中的所有数据都将丢失。存储在UIPasteboard中的所有信息也将丢失。
如果出现以下情况,您可以看到此消息:
该应用已转移到您的帐户,您是第一次更新它。在这种情况下,您无法阻止警告(和副作用)。
您的应用已于2011年6月之前添加到iTunes Connect,并且您最近更新了应用使用的配置文件。您的旧配置配置文件使用通配符(*)应用程序ID,而新配置文件现在使用特定的应用程序ID,或者相反(不太可能)。在后一种情况下,您可以切换回来并避免警告(在Xcode中选择正确的配置文件)。在另一种情况下,您的应用程序可能需要访问Game Center,推送通知(或通配符App ID不允许您使用的任何内容)等服务,并且您无法避免警告。
如果您需要更多详细信息,则警告与App ID前缀由Apple归属并且无法更改有关。检查Apple的“证书,标识符和配置文件”页面(https://developer.apple.com/account/ios/identifiers/bundle/bundleList.action中的“应用ID”部分 - 您需要登录),按ID并查看“前缀”字段。您还可以查看Apple的技术说明2311 https://developer.apple.com/library/ios/technotes/tn2311/_index.html
最后,您可以通过更改配置文件的Keychain Access Groups(keychain-access-groups)字段来避免警告。这不起作用,因为Apple不会让您为App ID和Keychain Access Groups提供不同的前缀。
答案 2 :(得分:0)
截至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进行更新时,它会因为技术说明中的设备控制台错误而失败:“升级&#application-identifier权利字符串[....]与已安装的应用程序不匹配application-identifier string [....];拒绝升级。“试图通过iTunes更新似乎无声地失败。
我希望答案很简单“这个错误只是表示Xcode选择了错误的配置文件,”在https://developer.apple.com/library/ios/technotes/tn2318/_index.html#//apple_ref/doc/uid/DTS40013777-CH1-TNTAG65中进行了验证。但我上次提交了许多Xcode版本的应用程序,找到合适的应用程序可能是一个挑战。
请注意,短语“ Xcode 选择了错误的配置文件”;要确保它选择了您您选择的配置文件,请在存档验证对话框中单击所选配置文件的截断名称旁边的箭头。要仔细检查,请使用已知错误提交到App Store(我无意中使用了丢失的图标),以便您查看是否出现警告。