应用 ID 和捆绑包 ID 有啥区别? Xcode 项目中的应用 ID 在哪里?

Posted

技术标签:

【中文标题】应用 ID 和捆绑包 ID 有啥区别? Xcode 项目中的应用 ID 在哪里?【英文标题】:What is the difference between the app ID and the bundle ID? Where is the app ID in the Xcode project?应用 ID 和捆绑包 ID 有什么区别? Xcode 项目中的应用 ID 在哪里? 【发布时间】:2010-11-24 21:55:33 【问题描述】:

在 pList 文件中,有一个格式为 com.mycompany.myapp 的捆绑 ID,但 Apple 在开发者门户上也提供了一个应用 ID。

因此,基本上,捆绑 ID 有什么用?在 Xcode 项目中哪里可以找到 app ID?

【问题讨论】:

【参考方案1】:

OP 问题的答案

app ID 和 bundle ID 有什么区别?

因为大多数人认为 App ID 是一个字符串,所以他们认为它可以与 Bundle ID 互换。之所以这样显示,是因为在 Member Center 中创建 App ID 后,您只能使用与 Application Bundle 的 Bundle ID 匹配的 App ID Prefix

Xcode 项目中的应用 ID 在哪里?

您在 Xcode 中找不到 App ID。它是会员中心的一个对象(不仅仅是一个字符串)。 Xcode 是找到 Bundle ID 的地方。在创建新项目时指定。 (下面的屏幕截图)项目中的每个 Target 都将具有唯一的 Bundle ID。可以通过在 Project Navigator 中选择项目并从 Jump Bar 中选择 Target 和 General 或 Info 来找到/更改它。

Xcode 界面是described here 或here(取决于Apple 当天的感受)。

bundle ID 有什么用?

它唯一地定义了每个应用程序。它在 Xcode 中指定。一个 Xcode 项目可以有多个目标,因此可以输出多个应用程序。一个常见的用例是一个应用程序,它同时具有精简版/免费版和专业版/完整版,或者以多种方式进行品牌化。

.


定义

    应用 ID

    将此视为会员中心中的一个对象,其中包含许多元数据,包括:

    应用 ID 说明 应用 ID 前缀 应用 ID 后缀 应用服务

    应用 ID 说明

    字母数字加空格

    有时你会看到这个而不是 App ID,或者下拉列表是按这个 App ID 排序的

    (我总是把它和 App ID 一样,把点变成空格)

    应用 ID 前缀

    从团队 ID 格式的可用哈希列表中选择(见下文)

    您几乎总是想选择标有“(团队 ID)”的那个

    应用 ID 后缀

    反向域名样式字符串

    这必须与 Xcode 中指定的 Bundle ID 匹配

    显式应用 ID

    使用不包含通配符的 App ID 后缀描述 App ID

    只能与单个应用关联(通过完全匹配 Bundle ID)

    兼容所有应用服务

    通配符应用 ID

    使用以星号结尾的 App ID 后缀来描述 App ID

    可以关联多个app(匹配类似于CLI/bash shell通配符匹配)

    不兼容Game Center应用内购买推送通知应用服务

    应用服务

    组合

    数据保护 游戏中心 iCloud 应用内购买 应用间音频 存折 推送通知

    团队 ID

    10 个字符的字母数字哈希

    每个开发者帐户都是唯一的(例如每年花费 99 美元的帐户,而不是帐户中的每个开发者)

    苹果身份证

    Apple 在 iTunes Connect 中首次创建应用程序时分配的唯一整数。

    捆绑 ID

    反向域名样式字符串

    在 Xcode 中定义

    唯一标识设备或模拟器上的应用程序包

    必须在 Apple 注册匹配的 App ID 才能部署

    用于区分应用更新与新应用

    应用程序包

    Xcode 中构建过程的结果。虽然它的扩展名为 .ipa,但它是一个 zip 文件。内容是一个非常具体的目录结构,包含应用程序需要的所有内容。看起来有人从 /Applications 中获取了一个 Mac .app 文件,放入名为 Payload 的目录中,对其进行压缩,然后更改扩展名。

    目标

    每个 Xcode 项目至少有 1 个目标。每个目标指定一个可以从项目构建的应用程序。

    SKU

    Apple 允许您在 iTunes Connect 中为每个应用程序存储 Stock Keeping Unit 字符串(字母数字,不能有空格)。除了将其显示在为您的记录而生成的报告中,Apple 不会对此做任何事情。

.


在 Xcode 中创建 Xcode ios 项目对话框

.


在会员中心创建 App ID 页面

.


iTunes Connect 中的应用信息页面

【讨论】:

哇!我忘了我创造了这个。我需要一些我忘记并通过谷歌找到的信息。 *** 是我的技术博客。 呃! Apple 将其 URL 从“library/ios/documentation”更改为“library/prerelease/watchos/documentation”? WTF?!?! 答案中的前 2 个链接已失效。 从我 2015 年的评论中可以看出,在我创建这个 2013 年的答案 2 年后,Apple 改变了他们的 URL 模式。现在,又过了 2 年,他们又做了一次。我真的无法让我所有的 SO 答案保持最新。我给社区并留给他们编辑我的答案,或者至少告诉我需要进行哪些更改。我什至不再做 iOS/移动工作了。 我和你有不同的开发团队,可以为我们的应用使用相同的 bundleID 吗? iOS 设备上的应用基本上是由 appID 还是 bundleID 区分的?【参考方案2】:

Bundle ID 是 App 的标识符,但 App ID 不是。 App ID 是 App 和配置文件之间的连接。

从here 的“关于捆绑包 ID”部分,您可以看到,“捆绑包 ID 精确标识单个应用程序”。

从here,您可以看到,“应用 ID 的主要用途是作为配置文件的一部分;它指定哪些应用程序被配置文件授权签名和启动。”。

App ID 有两部分:“bundle seed ID”和“bundle ID search string”。 Bundle seed ID使App共享keychain数据,即具有相同bundle seed ID的App的keychain入口。 Bundle ID 搜索字符串 定义了此 App ID 涵盖的 App 数量。如果您使用通配符应用 ID,这意味着许多应用将通过与此应用 ID 关联的配置文件获得授权。更多详情请参考here。

【讨论】:

所以“app id”不能识别应用。难怪这么多人迷茫。【参考方案3】:

简单地说,捆绑 ID 可以准确地标识单个应用。捆绑 ID 在开发过程中用于配置设备,并在应用分发给客户时由操作系统使用。

在开发过程中,您在许多不同的地方使用应用的捆绑 ID 来识别应用。

而应用 ID 是一个由两部分组成的字符串,用于标识来自单个开发团队的一个或多个应用。

团队 ID 由 Apple 提供,并且对于特定的开发团队是唯一的,而捆绑 ID 搜索字符串由您提供,以匹配单个应用的捆绑 ID 或您的一组应用的捆绑 ID应用程序。

有两种类型的应用 ID:显式应用 ID,用于单个应用,以及通配符应用 ID,用于一组应用。

来源:Bundle ID,APP ID

【讨论】:

这个答案充满了变幻莫测和相关的观点,但并没有真正以任何有意义或相关的方式对比 app id 和 bundle id 的实际用法。此答案可能是更大答案的一部分,但并未真正回答所述问题。 你的意思是 TeamID + BundleID = AppID? @Honey 没错,TeamID + BundleID = AppID【参考方案4】:

多个应用可以共享同一个应用 ID。 App ID 不唯一标识应用程序。

App ID 是一个由两部分组成的字符串,用于识别来自单个开发团队的一个或多个应用程序

https://developer.apple.com/library/content/documentation/General/Conceptual/DevPedia-CocoaCore/AppID.html

您在 iTunes Connect 中看到的 ID(在应用程序中是唯一的)称为应用程序的 Apple ID。对于造成的混乱,我深表歉意,因为 Apple 没有人会这样做。

【讨论】:

我可以在 iTunesConnect 的哪个位置找到应用的 App ID? @fishinear,Bundle ID(是一个字符串)在 ITC 的应用详情页面中。 App ID(是一个对象,不是字符串)只存在于开发者会员中心。我需要在 ITC 的搜索结果/查看所有页面上查看捆绑 ID。此用户脚本中的最后一个函数就是这样做的。 userscripts.org/scripts/show/162683【参考方案5】:

App id 是两个字符串的组合,用句点 (.) 分隔。 String1是一个团队id,分配给开发团队。(苹果提供) String2 是一个bundle id,由你选择。

App id 有两种类型。

    显式应用 ID: 此处的团队 ID 用于仅匹配一个具有特定捆绑 ID 的应用。此应用 ID 仅用于匹配一个应用。 示例:TEAM_ID.BUNDLE_ID

    通配符应用 ID: 这里的团队 ID 用于匹配具有多个捆绑 ID 的多个应用。此应用 ID 用于匹配多个应用。 示例:TEAM_ID.BUNDLE_ID1、TEAM_ID.BUNDLE_ID2 ...

【讨论】:

以上是关于应用 ID 和捆绑包 ID 有啥区别? Xcode 项目中的应用 ID 在哪里?的主要内容,如果未能解决你的问题,请参考以下文章

更改捆绑 ID iOS

Xcode 通配符和 com.domain.name App ID 有啥区别?

捆绑 ID 问题 - 我无法获取 Xcode 捆绑 ID 和 iTunes 连接 ID 以反映相同的 ID

应用组和多个捆绑 ID

无法在 iTunes Connect 中更改捆绑 ID?

应用 ID 和捆绑标识符:配置文件问题