集成Apple 平台
00 / 00

Bundle ID、App ID 和 App Group

理解 Apple 应用身份、扩展身份、系统能力和共享容器的关系

Apple 体系里最容易混的几个名字是 Bundle ID、App ID、App Group 和 App Store Connect Apple ID。它们不是一回事。

Bundle ID
你给 App 定的固定身份,例如 com.01mvp.onesay
App ID
Apple Developer 里注册出来的记录,绑定 Bundle ID 和系统能力。
App Group
主 App 和 Widget、扩展共享数据的容器,例如 group.com.01mvp.onesay
App Store Connect Apple ID
商店后台生成的数字 ID,不写进代码里的 Bundle ID。

为什么要固定 Bundle ID

Bundle ID 是系统、商店、证书、推送、内购、权限记录共同识别应用的主键。发布后乱改,系统会把它当成另一个应用。

影响面Bundle ID 变了会怎样
iOS / macOS 系统可能被识别成另一个 App,权限、数据、Keychain 记录不再对应
App Store Connect已创建的 app record 不能直接换成另一个 Bundle ID
推送和内购APNs、IAP 等能力都绑定在对应 App ID 上
Widget / Extension每个 target 都要有自己的 Bundle ID
macOS TCC 权限麦克风、辅助功能、输入监听等权限可能要重新授权

一个 App 为什么会有多个 ID

iOS 主 App、Widget、Share Extension、App Clip 都是不同的 target。Apple 要分别识别它们,所以每个 target 都要有自己的 Bundle ID。

主 App
com.01mvp.onesay
用户真正打开的应用。
Widget,小组件
com.01mvp.onesay.widgets
iOS 桌面或锁屏上的小组件,它是一个独立 target。
App Group,共享容器
group.com.01mvp.onesay
主 App 和 Widget 都加入这个 group,才能共享少量数据。
macOS / Tauri 桌面端
com.01mvp.onesay.desktop
桌面端是另一个应用,通常用独立 Bundle ID。

App ID 负责什么

在 Apple Developer 里注册 App ID 时,你会选择 explicit App ID,并填入 Bundle ID。之后勾选 capabilities。

常见 capabilities:

能力什么时候开
App Groups主 App 和 Widget、Share Extension 等扩展共享数据
Push Notifications需要 APNs 推送
Sign in with Apple接入苹果登录
Associated DomainsUniversal Links、网页到 App 的关联
In-App PurchaseiOS 内购,explicit App ID 默认支持

改 capabilities 后,相关 provisioning profile 可能会失效。EAS 或 Xcode 自动签名时通常会帮你重新生成;手动管理证书时要自己更新 profile。

注册顺序

1
定 Bundle ID
先按品牌和域名确定长期不变的命名。
2
注册 App ID
在 Apple Developer 里创建 explicit App ID。
3
开 capabilities
只开当前真的需要的能力。
4
注册 App Group
有 Widget 或扩展共享数据时再做。
5
代码写同一个值
Expo、Xcode、Tauri 配置必须和后台一致。

官方资料

这篇文档有问题?