15

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

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

在此处输入图像描述

为了使用 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?

4

3 回答 3

29

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

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

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

App ID:一个字符串,用于标识来自单个团队的一个或多个应用程序。App ID 包含一个捆绑 ID 搜索字符串,前面是Team ID,这是一个由 Apple 生成的 10 个字符的字符串,用于唯一标识一个团队。在您链接的技术说明ABCDE12345中,它被称为捆绑种子 ID。

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

现在我将回答你的子弹:

  • 要使用 Game-Center (GameKit) 和 IAP,您需要一个明确的 App ID,即带有不带 * 的捆绑 ID 搜索字符串的 App ID 。通配符 App 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 创建一个配置文件,您只需在您的设备上为您的所有应用程序安装此配置文件。这种类型的默认配置文件称为团队配置文件,它对您的所有应用程序都有效,但您可以创建更具体的对所有应用程序的子集有效的配置文件。

这个过程对大团队非常有用。如果你有一个小团队和很少的应用程序,这真的很令人困惑,但它有助于理解其背后的原因。

但关于这一切还有更多要说的。我建议您像我最近一样阅读“应用分发指南”。这是一个广泛的指南,但目前您只需要阅读主题“维护您的签名身份和证书”和“维护标识符、设备和配置文件”部分。该指南非常清晰,充满了屏幕截图,它将回答您的所有问题。您也可以在路上回到指南以快速解决一些问题(您会遇到问题)。

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

于 2013-06-22T12:00:10.730 回答
5

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

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

于 2013-06-20T13:31:41.237 回答
2

我认为苹果想要的是:

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

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

  3. 如果您为您的应用程序拥有的 bundleID 未用于您的任何其他应用程序,您可以使用它。

哪位懂的,如有错误请指正。

于 2013-06-20T10:18:20.183 回答