更改AppID前缀在更新之间安全吗?

29
我正在尝试理解iOS应用程序的AppID的第一部分的作用。这部分以前被称为“Bundle Seed ID”,但现在通常被称为AppID前缀。
一段时间以前(iOS 5?),苹果在其门户网站和文档中进行了一些更改,并开始建议使用“Team ID”(每个开发者帐户唯一)作为AppID前缀。这对于具有新应用程序的新开发人员来说非常简单明了。
但是,对于现有应用程序,处理AppID前缀的最佳实践是什么? 我知道在两个应用程序版本之间无法更改BundleID(= AppID的第二部分),但是在应用程序版本之间更改前缀是否安全? 请注意,我不是指将“通配符AppID”(例如ABC1234567.*)替换为具有相同前缀的显式AppID(例如ABC1234567.com.mycompany.myapp)。关于此问题有大量信息(尽管大多已过时)。我考虑通过用我的Team ID替换前缀,例如DEF7654321.com.mycompany.myapp,来更改现有应用程序的完整AppID。
我认为我在某个地方读到过更改现有应用程序的前缀应该是可以的,除非应用程序正在使用钥匙串存储数据。如果这是真的,那么处理现有应用程序的前缀的最简单方法是在发布下一个更新时迁移到新的Team ID。当所有我的应用程序都迁移后,我可以继续使用Team ID(苹果建议新应用程序这样做),最后忘记所有这些混乱。 有人能证实这一点吗? 如果您能更详细地介绍AppID前缀的概念以及它在iOS设备上实际用途(除了我已经知道的钥匙串之外),如果您能写下评论,我将非常高兴。也许我们可以通过从不同来源添加碎片来建立对此的完整理解。不幸的是,在这个领域,苹果的文档非常薄弱。

还有一个类似的问题:在我的应用程序被批准之后,我可以更改其Bundle Identifier吗? 但是这主要集中在BundleID上,即AppID的第二部分,因此这不是重复的,尽管一些答案和评论触及了这个话题。


关于AppID前缀是否用于控制对钥匙串的访问以外的任何其他目的,我注意到在iOS 7的UIPasteboard参考文档中有一个变化:对于方法“pasteboardWithName:create:”,现在有一个注释说明两个应用程序必须具有“相同的团队ID”才能共享剪贴板。我怀疑这可能是一个打字错误,并且它实际上是指AppID前缀。很难相信iOS在运行时直接了解TeamID,除非TeamID被用作AppID前缀的情况。 - Magnus
2个回答

26

根据我今天的结论,除了使用keychain的应用程序外,将AppID前缀替换为新的前缀是完全安全的。这为所有在App Store上的现有应用程序迁移基于TeamID的新前缀开辟了机会。

这个结论基于以下输入:

  • 几周前我与苹果的开发人员支持团队进行的讨论。他们告诉我更改前缀不应该存在任何问题,除了使用keychain的应用程序。
  • 我进行的测试,使用点对点分发验证一个现有应用程序在更新为具有另一个前缀的新版本时没有丢失任何数据。
  • 事实是,我已经成功地上传了两个我现有应用程序的新版本,替换掉了前缀,到目前为止没有任何问题。

我更改了这两个“在线”应用程序的状态,它们已经通过审核。然而,它们目前正在“等待开发者发布”的状态,因为我正在等待第三个应用程序准备就绪,以便与之同步发布。

如果在它们在App Store上线后出现任何问题,我当然会更新这个答案。

更新:

这两个应用程序已经成功发布超过三个星期了。发布进展顺利,我没有收到任何用户投诉。

总之,答案是YES,这是完全安全的!


你能否解释一下你是如何使用不同前缀创建新的应用ID的?我还是无法这样做。它会显示“标识符为'com.domain.appname'的应用程序ID不可用,请输入另一个字符串。”,即使针对我仍在使用的应用程序ID和我在可以删除它们时删除的应用程序ID也是如此。 - Filip Radelic
已删除创建新随机前缀的选项。如果您今天从头开始,唯一的选择是使用TeamID作为前缀。如果您有一些现有的应用程序使用其他前缀,创建新的AppIDs时这些现有的前缀也将出现为选项。在我的情况下,我只测试了使用TeamID替换旧通配符AppID为新显式AppID。我认为你的问题可能是另一个:BundleIDs需要全局唯一。请参见https://dev59.com/ZVjUa4cB1Zd3GeqPUtDw#6546206。也许不可能使用TeamID基于新的显式AppID替换旧的显式AppID? - Magnus
还有一件事:我在应用商店上有5个应用程序。没有一个使用需要明确AppID的功能。我只有一个通配符AppID为所有应用程序提供服务。然而,当我开始调查这个问题时,我发现门户网站上存在许多我从未创建过的显式AppID!每个现有应用程序都有一个ID。尽管我的应用程序使用另一个前缀,但它们使用了TeamID。可能是当苹果引入新的TeamID策略时自动生成的这些ID之一。当我替换前缀时,我使用了其中一个ID。 - Magnus
是的,通配符完全是另一回事(你应该在问题中提到它),但并不是每个人都使用通配符,也有许多应用程序无法使用。至于在门户网站上明确拥有每个应用程序ID,Xcode 5会为您与团队凭据构建的每个项目执行此操作。 - Filip Radelic
是的,我知道。我开始研究这个领域的原因是我计划为我的一个应用程序添加IAP,所以我需要更改为明确的AppID。然后我想使用新的TeamID前缀,因为这显然是苹果现在推荐的。我的问题的主要焦点是是否安全替换前缀,而不是如何在不同情况下执行替换。这就是我一开始没有提到通配符ID的原因。关于安全性,我认为我的问题已经得到了回答。感谢您解释我的门户上新的AppIDs来自哪里! - Magnus
显示剩余8条评论

10

2014年2月12日,苹果公司发表了一份新的技术说明,确认自己可以(而且安全)更改通配符应用程序ID的前缀,但仍无法为显式应用程序ID自行更改。

然而,他们表示,如果您希望更改显式应用程序ID的前缀,可以联系会员中心维护人员。

在此还包括这部分内容,以防他们再次更改主意:

所有其他应用程序标识符都需要会员中心维护人员的帮助 - 如果您没有使用通配符应用程序ID,则应联系iOS会员中心维护人员寻求帮助。以下是您可以使用的步骤:

  1. 转到https://developer.apple.com/contact/
  2. 通过单击“注册和帐户”下面的链接提交请求。

请注意,如果您的应用程序在Keychain中存储数据,则更改应用程序ID前缀将导致一次性Keychain数据丢失。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接