iTunes Connect:关于Bundle ID感到困惑

15

我很兴奋地尝试第一次在iTunes Connect上添加一个新的应用程序来测试我的GameKit功能。

我已经阅读了这篇技术文章,但现在感到有些困惑,因为当我开始开发应用程序时,我就已经创建了一个应用程序绑定标识符(这是我当前使用的bundle id,也是我创建当前配置文件和测试配置文件的bundle id:hello-*)。

enter image description here

想要使用GameKit和InApp购买,我该创建一个新的Bundle Id吗?

我感到困惑,因为:

  • 我不知道当前的Bundle Id是否有效(与上面链接的技术文章相比)
  • 我不知道Bundle Id是否会影响以后可以添加到应用程序中的内容(例如In App Purchase、GameKit等)
  • 如果我创建一个具有通配符的名称(例如:HelloApple),但具有通配符的Bundle Id(例如:hello-*),那么我能否在稍后的阶段添加一个具有相同名称但具有不同Bundle Id的新应用程序?这是在发布任何两个应用程序之前的情况。
  • 我不完全理解为什么需要在使用或不使用通配符之间进行选择;换句话说,如果需要使用非通配符bundle id才能进行In App购买和GameKit,为什么开发人员还想要使用通配符应用程序标识符?

任何帮助将不胜感激,特别是我需要解决的第一个问题:我应该使用哪个Bundle Id以便使用GameKit和InApp购买?

3个回答

29
在回答您的问题之前,先给出一些定义: Bundle ID:一个反向DNS字符串,精确地标识单个应用程序。 Bundle ID搜索字符串:用于匹配一组bundle ID,其中每个bundle ID标识单个应用程序。例如,如果bundle ID搜索字符串是com.mycompany.MyApp或通配符(如com.mycompany.*),则它将匹配bundle ID com.mycompany.MyAppApp ID:标识来自单个团队的一个或多个应用程序的字符串。一个App ID由 bundle ID搜索字符串 前面加上 Team ID 组成,Team ID是Apple生成的一个10个字符的字符串,用于唯一标识一个团队。在您链接的技术说明中,它是ABCDE12345,称为Bundle Seed ID。 (开发)配置文件:在开发过程中使用它来授权您的应用程序在设备上启动并使用某些存储技术。它由一个单独的App ID、一组设备和一组开发证书组成。配置文件是在成员中心创建的,您需要将其安装到设备上才能运行应用程序。XCode可以下载配置文件并将其安装到设备上。
现在我来回答您的问题:
  • 要使用Game-Center(GameKit)和IAP,您需要一个显式App ID,即一个没有*的bundle ID搜索字符串的App ID。一个通配符App ID是指 bundle ID搜索字符串 带有*的App ID,而这就是您现在拥有的。
  • 最初创建的是带有相关Bundle ID的App ID。如果它是显式的,则可以添加Game-Center和IAP功能,如果它是通配符App ID,那就只能如此了。
  • 不能使用不同名称但具有相同明确App ID或Bundle ID的两个应用程序。但是,您可以使用通配符App ID的唯一App ID创建不使用Game-Center或IAP的不同名称的两个或多个应用程序。
  • 你问为什么通配符很有用...嗯,我说如果你不使用Game-Center或IAP,你可以有两个或更多与通配符App ID相关联的应用程序。然后,您可以使用此App ID创建一个配置文件,并且只需要在您的设备上安装此配置文件即可为所有应用程序服务。此类默认配置文件称为Team Provisioning Profile,适用于您的所有应用程序,但您可以创建更具体的配置文件,适用于您的部分应用程序。

这个过程对于大型团队非常有用。 如果您拥有小团队和少量应用程序,那么这真的很混乱,但它有助于理解其背后的原因。

但是关于所有这些还有更多要说的。 我建议您像我最近那样阅读“应用程序分发指南”。这是一份详尽的指南,但目前您只需要阅读主题“维护您的签名标识和证书”和“维护标识符,设备和配置文件”的部分。该指南非常清晰,充满屏幕截图,并将回答您所有的问题。另外,您以后可以返回指南快速解决某些问题(而您一定会遇到问题)。

一年多以前,我第一次创建一个带有Game-Center和IAP的App时,我在stackoverflow上查找答案解决了所有问题。但是每当证书过期、添加新设备等问题出现时,我都会在反复尝试并回到stackoverflow后找到暂时有效的解决方案。不要误解,stackoverflow中有很好的答案,但在我的经验中,阅读更长,解释整体情况的内容是更好的方法。App ID、Bundle ID、证书、私钥等是一个混乱的主题,特别是如果你不明白为什么要这样构建它。


感谢Robotillo,我接受了你的答案,因为它更完整。 - mm24
为什么它被构建成这样,答案会改变你的看法。 - Abhinav Singh

5
bundle id只是你的应用程序的标识符。它主要用于为您提供在提交到App Store之前签署应用程序所需的证书,或者在开发设备上使用(例如进行测试)。bundle id可以是任何你想要的。苹果推荐使用语法com.yourcompany.yourapp,以保持开发的应用程序一致,并避免与其他应用程序的标识符冲突。
通配符可用于所有应用程序,而特定的id仅适用于一个应用程序。我建议你为每个应用程序都有一个id,而只为开发使用通配符(这样你就可以在你的设备上运行尽可能多的应用程序,而不必担心证书,直到你决定发布应用程序)。您不需要在所有应用程序上访问所有服务(如Game Center或iCloud),因此最好根据您的应用程序需要仅签署单个证书。

嗨 Gianluca,感谢你的回答。我已经有一个通配符ID,用来测试“TestApps”了。但是现在我需要测试特定应用的GameKit功能。这种情况下,我是否需要为该应用程序重新构建所有的配置文件(开发配置文件和分发配置文件)? - mm24
1
是的,当您添加需要证书数据(如Game Center和iCloud)的功能时,您需要重新制作该应用程序的配置文件。幸运的是,如果您有Xcode 5(目前处于开发者预览版),Xcode会为您完成此操作。 - Gianluca Tranchedone
嗨Gianluca,我想接受这个答案,但我还有一个疑问。我已经创建了我的捆绑标识,然后去iTunes connect上创建了我的新应用程序。它已经要求我提供屏幕截图并选择价格级别。我只想为GameCenter测试应用程序。我该怎么做?我的意思是,是否应该已经向苹果提供所有这些信息,以仅测试GameCenter的应用程序? - mm24
1
不幸的是,是的,你必须这样做。但是在提交应用程序之前,您可以编辑大部分此信息。如果我没记错的话,您无法更改的唯一内容是 SKU(无用的,所以不要担心),捆绑标识符和应用程序名称(但我对这个不是100%确定)。 - Gianluca Tranchedone
很酷...我不完全理解的是,即使游戏还没有完成,苹果怎么能要求开发者提交应用程序图标。我本来以为他们只会在二进制文件上传后才会要求这样做。我想第二次也可以更改这些内容。 - mm24
1
是的,您可以稍后更改图标和屏幕截图。 - Gianluca Tranchedone

2
我认为苹果想要实现以下目标:
  1. 为每个使用应用内购买/游戏中心或两者的应用创建不同的捆绑标识符(bundle ID)。

  2. 对于不使用这些功能的应用,您可以拥有相同的App-ID和捆绑标识符。

  3. 如果您的应用程序的捆绑标识符没有用于您的任何其他应用程序,则可以使用它。

如有更专业的人士,请指正。

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