【问题标题】:Is it safe to change the AppID Prefix between updates?在更新之间更改 AppID 前缀是否安全?
【发布时间】:2013-08-27 08:28:28
【问题描述】:

我正在尝试了解 iOS 应用程序的 AppID 的第一部分的作用。 这部分以前称为“Bundle Seed ID”,但现在通常称为 AppID Prefix。

不久前(iOS 5?),Apple 对其门户和文档进行了一些更改,并开始推荐使用“团队 ID”(每个开发者帐户唯一)作为 AppID 前缀。对于使用新应用的新开发者来说,这非常简单明了。

但是,对于 AppID 前缀,处理现有应用程序的最佳做法是什么? 我知道在两个应用版本之间更改 BundleID(= AppID 的第二部分)是不可能的,但是在应用版本之间更改前缀是否安全?

请注意,我不是指替换“通配符 AppID”,例如ABC1234567.*,使用相同前缀的显式 AppID,例如ABC1234567.com.mycompany.myapp。有大量关于此的信息(不过其中大部分已经过时)。我正在考虑更改完整的 AppID,例如ABC1234567.com.mycompany.myapp,对于现有应用程序,将前缀替换为我的团队 ID,例如DEF7654321.com.mycompany.myapp.

我想我在某处读到应该可以更改现有应用程序的前缀,除非应用程序使用钥匙串存储数据的特殊情况。如果这是真的,处理现有应用程序前缀的最简单方法是在发布下一个更新时迁移到新的团队 ID。当我的所有应用程序都迁移完毕后,我可以继续使用团队 ID(正如 Apple 为新应用程序所推荐的那样),最终忘记所有这些混乱。 谁能证实这一点?

如果您可以进一步了解 AppID 前缀的概念,以及它在 iOS 设备上的实际用途(除了我已经知道的钥匙串),如果您能写评论,我会很高兴.也许我们可以通过添加来自不同来源的点点滴滴来建立对此的充分理解。遗憾的是,Apple 文档在这方面的内容非常薄。

(还有一个类似的问题:Can I change the Bundle Identifier in my app after it's been approved? 不过主要是针对BundleID,即AppID的第二部分,所以这不是重复的,虽然有些答案和cmet都涉及到这个话题.)

【问题讨论】:

  • 关于 AppID 前缀是否用于任何其他目的而不是控制对钥匙串的访问的问题,我注意到 UIPasteboard 参考文档中的更改。对于 iOS 7:对于方法“pasteboardWithName:create:”,现在有一条说明指出两个应用程序必须具有“相同的团队 ID”才能共享粘贴板。我怀疑这可能是一个错字,它实际上是指 AppID 前缀。很难相信 iOS 在运行时对 TeamID 有任何直接的了解,除了将 TeamID 用作 AppID 前缀的情况。

标签: ios ios-provisioning app-id


【解决方案1】:

截至今天,我的结论是,将 AppID 前缀替换为新前缀是完全安全的,但使用钥匙串的应用程序除外。这为将我在 App Store 上所有现有应用程序的前缀迁移到新的基于 TeamID 的前缀打开了大门。

此结论基于以下输入:

  • 几周前我与 Apple 的开发人员支持进行了一次讨论 前。他们告诉我,除了使用钥匙串的应用程序之外,更改前缀应该没有任何问题。
  • 我使用 ad-hoc 分发进行的一项测试,验证测试设备上的现有应用在更新到具有另一个前缀的新版本时没有丢失任何数据。
  • 我已经成功上传了两个新版本,替换了前缀 到目前为止,我现有的应用程序没有任何问题。

我改过的两个“live”应用的状态,是已经审核通过了。但是,他们目前正在“等待开发者发布”中等待,因为我正在等待第三个应用程序准备好与该版本同步。

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

更新:

这两个应用程序在三个多星期前成功发布。推出按预期进行,我没有收到任何用户投诉。

总而言之,答案是肯定的,这是完全安全的!

【讨论】:

  • 您能否解释一下您是如何设法创建具有不同前缀的新 App ID 的?它仍然不允许我这样做。说An App ID with Identifier 'com.domain.appname' is not available. Please enter a different string. - 既适用于我仍然处于活动状态的应用程序 ID,也适用于我删除但可以删除它们的应用程序 ID。
  • 删除了创建新随机前缀的选项。如果您今天从头开始,您唯一的选择是使用 TeamID 作为前缀。如果您有一些现有应用程序使用其他前缀,则这些现有前缀也会在创建新 AppID 时作为选项出现。就我而言,我只测试了使用 TeamID 将旧的通配符 AppID 替换为新的显式 AppID。我认为您的问题可能是另一个问题:BundleID 必须是全球唯一的。请参阅stackoverflow.com/a/6546206/824515 或许无法将旧的显式 AppID 替换为基于 TeamID 的新 AppID?
  • 还有一件事:我在 App Store 上有 5 个应用程序。没有使用任何需要显式 AppID 的功能。我只有一个通配符 AppID 服务于所有应用程序。然而,当我开始调查这个问题时,我发现门户上有许多我自己从未创建过的显式 AppID!我现有的每个应用程序都只有一个 ID。这些使用的是 TeamID,即使我的应用程序使用了另一个前缀!这些 ID 可能是在 Apple 推出新的 TeamID 政策时自动生成的。这是我在替换前缀时使用的这些 ID 之一。
  • 是的,通配符是一个完全不同的故事(你应该在你的问题中提到这一点),但通配符并不是每个人都使用,不能被许多人使用应用。至于在门户中明确显示您的每个应用程序 ID,Xcode 5 会为您使用团队凭据构建的每个项目执行此操作。
  • 是的,我知道。我开始深入研究这个领域的原因是我打算将 IAP 添加到我的一个应用程序中,因此我需要更改为该应用程序的显式 AppID。然后我想使用新的 TeamID 前缀,因为这显然是 Apple 现在推荐的。我的问题的主要焦点是替换前缀是否安全,而不是如何在不同情况下实际执行替换。这就是我一开始没有提到通配符 ID 的原因。关于安全,我认为我的问题已得到解答。感谢您解释我在门户网站上的新 AppID 来自哪里!
【解决方案2】:

Apple 于 2014 年 2 月 12 日发布了新的tech note,确认可以(并且安全*)自己更改通配符应用程序 ID 的前缀,但仍然无法为显式应用程序自行更改ID。

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

将这部分包括在此处,以防他们改变主意再次

所有其他 App ID 都需要会员中心维护人员的帮助 - 如果您未使用通配符 App ID,则应联系 iOS 会员中心维护人员寻求帮助。以下是您可以用来执行此操作的步骤:

  1. 转到https://developer.apple.com/contact/
  2. 点击注册和帐户下的链接提交请求。

* 请记住,如果您的应用在 Keychain 中存储数据,更改应用 ID 前缀将导致一次性 Keychain 数据丢失。

【讨论】:

    猜你喜欢
    • 2013-04-06
    • 2019-05-16
    • 1970-01-01
    • 2012-02-15
    • 2019-05-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多