iTunes 连接:对 Bundle ID 感到困惑

Posted

技术标签:

【中文标题】iTunes 连接:对 Bundle ID 感到困惑【英文标题】:iTunes connect: confused on Bundle ID 【发布时间】:2013-06-12 12:29:27 【问题描述】:

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

我已经阅读了this 技术说明,我感到很困惑,因为我在开始开发时已经为我的应用程序创建了一个 boundle id(这是我创建当前配置和测试配置文件的当前捆绑包 id : 你好-*)。

为了使用 GameKit 和 InApp Purchase,我应该创建一个新的 Bundle Id 吗?

我很困惑,因为:

我不知道当前的 Bundle Id 是否有效(关于上面链接的技术说明) 我不知道 hte Bundle Id 是否会影响我以后可以在 App 中添加的内容(例如,在 App Purchase、GameKit 中...) 如果我创建一个具有名称(例如:HelloApple)但捆绑 ID 带有通配符(例如:hello-*)的新应用程序,我是否能够添加具有相同名称但捆绑 ID 不同的新应用程序后期?这确实是在发布这两个应用程序之前的任何一个。 我不完全理解为什么要在使用或不使用通配符之间进行选择;换句话说,如果需要在 App 购买和 GameKit 中使用非通配符捆绑 ID,开发者为什么要使用通配符 App Id?

任何帮助将不胜感激,特别是我需要解决我的第一个问题:我应该使用哪个捆绑包 ID 才能使用 GameKit 和 InAppPurchase?

【问题讨论】:

【参考方案1】:

在回答您的问题之前先定义一些定义:

Bundle ID:精确识别单个应用的反向 DNS 字符串。

Bundle ID 搜索字符串:用于匹配一组 bundle ID,其中每个 bundle ID 标识一个应用。例如,如果捆绑包 ID 搜索字符串是 com.mycompany.MyApp 或诸如 com.mycompany.* 的通配符,那么它将匹配捆绑包 ID com.mycompany.MyApp

App ID:标识单个团队的一个或多个应用程序的字符串。 App ID 由 bundle ID 搜索字符串 组成,前面是 Team ID,这是一个由 Apple 生成的 10 个字符的字符串,用于唯一标识一个团队。在您链接的technical note 中,它是ABCDE12345,并称为捆绑种子ID。

(开发)供应配置文件:您使用它来授权您的应用在设备上启动并在开发时使用某些商店技术。它由:单个 App ID、一组设备和一组开发证书组成。配置文件是在会员中心创建的,您需要在您的设备上使用它们来运行您的应用程序。 XCode 可以下载配置文件并将它们安装到设备上。

现在我会回答你的子弹:

要使用 Game-Center (GameKit) 和 IAP,您需要一个显式 App ID,即带有不带 * 的 bundle ID 搜索字符串的 App ID。 通配符应用 ID 是其中 捆绑 ID 搜索字符串 带有 * 的 ID,并且是您现在拥有的 ID。 您最初创建的是一个带有关联 Bundle ID 的 App ID。如果它是明确的,你可以添加 Game-Center 和 IAP,如果它是通配符 App ID 不是......就是这样。 您不能拥有两个具有不同名称但具有相同显式 App ID 或 Bundle ID 的应用程序。但是,您可以拥有两个名称不同的应用,它们不使用 Game-Center 或 IAP,并使用通配符应用 ID 使用唯一的应用 ID。 您问为什么通配符有用...好吧,我说如果您不使用 Game-Center 或 IAP,您可以将两个或多个应用程序关联到通配符 App ID。然后,您可以使用此 App ID 创建一个配置文件,您只需在您的设备上为您的所有应用程序安装此配置文件。这种类型的默认配置文件称为团队配置文件,它对您的所有应用都有效,但您可以创建更具体的对所有应用的子集有效的配置文件。

这个过程对于大型团队非常有用。如果您的团队很小且应用程序很少,这确实令人困惑,但有助于理解其背后的原因。

但是关于这一切还有很多话要说。我建议您像我最近一样阅读“App Distribution Guide”。这是一个广泛的指南,但目前您只需要阅读主题“Maintaining Your Signing Identities and Certificates”和“Maintaining Identifiers, Devices, and Profiles”的部分。该指南非常清晰,充满了屏幕截图,它将回答您的所有问题。您也可以在路上返回指南以快速解决一些问题(您会遇到问题)。

一年多前我第一次使用 Game-Center 和 IAP 创建应用程序时,我查找了 *** 来回答我所有的问题。但是当证书过期时,当我添加新设备等时,我一直遇到问题,每次我在经过大量摆弄并回到 *** 之后找到临时解决方案。不要误会我的意思,*** 中有很好的答案,但根据我的经验,阅读更长的内容来解释大局是一个更好的策略。 App ID、Bundle ID、证书、私钥等都是一个混乱的主题,特别是如果你不明白为什么要这样构建的话。

【讨论】:

谢谢Robotillo,我接受了你的回答,因为它更完整。 “为什么要这样构建”,答案改变了你的看法【参考方案2】:

bundle id 只是您应用的标识符。它主要用于为您提供在提交到 App Store 或在开发设备上使用(例如用于测试)之前签署应用程序所需的证书。 bundle id 可以是任何你想要的。 Apple 建议使用 com.yourcompany.yourapp 语法,以使其在您开发的应用程序之间保持一致,并避免与其他应用程序的标识符冲突。

通配符可用于您的所有应用,而特定 ID 只能用于一个应用。我建议您为每个应用程序设置一个 ID,并且只使用一个通配符进行开发(这样您就可以在您的设备上运行任意数量的应用程序,而无需担心证书,直到您决定发布该应用程序)。您无需访问所有应用程序上的所有服务(如 Game Center 或 iCloud),因此您最好仅使用应用程序所需的服务签署单一证书。

【讨论】:

您好 Gianluca,感谢您的回答。到目前为止,我已经有一个通配符 id 用于测试“TestApps”。但是现在我正处于需要测试特定应用程序的 GameKit 功能的阶段。在这种情况下,我是否需要为该应用重建所有配置文件(开发配置文件和分发)? 是的,当您添加需要您的证书数据的功能(如 Game Center 和 iCloud)时,您需要重新制作该应用程序的配置文件。幸运的是,如果您有 Xcode 5(目前处于开发者预览版中),Xcode 会为您完成。 您好 Gianluca,我愿意接受这个答案,但我还有最后一个疑问。我已经创建了我的 boundle id,然后在 iTunes connect 上创建了我的新应用程序。它已经要求我提供屏幕截图并选择价格等级。我想做的就是测试 GameCenter 的应用程序。我该怎么做?我的意思是,我是否应该已经向 Apple 提供所有这些信息,以便仅测试 GameCenter 的应用程序? 不幸的是,是的,你必须这样做。但是您可以稍后在提交您的应用程序之前编辑大部分此类信息。如果我没记错的话,你唯一不能改变的是 SKU(没用,所以不用担心)、捆绑包 ID 和应用程序名称(但我不是 100% 确定这个)。 是的,您可以稍后更改图标和屏幕截图。【参考方案3】:

我认为苹果想要的是:

    为每个使用应用内购买/GameKit 或两者的应用创建不同的捆绑 ID。

    对于不使用这些的应用,您可以拥有相同的 App-ID 和捆绑 ID。

    如果您的应用程序的 bundleID 没有用于您的任何其他应用程序,您可以使用它。

请高人指正,如有错误请指正。

【讨论】:

以上是关于iTunes 连接:对 Bundle ID 感到困惑的主要内容,如果未能解决你的问题,请参考以下文章

来自另一个开发者帐户的 iTunes Connect 和 Bundle ID

如何让 iTunes Connect 识别新的 Bundle ID

iTunes 连接时区混乱

iTunes 连接验证

从 bundle id 获取应用名称

如何只让某些人测试interal itunes连接测试