00 / 00
Apple Identifiers
为 iOS App、Widget、App Group 和能力配置注册正确的 Bundle ID
Apple 后台里的 Identifiers 负责回答一个问题:这个 App 到底是谁,它允许使用哪些系统能力。
对 01MVP mobile 来说,最小配置是一个主 App Bundle ID。以后要做 Widget、Universal Links、推送、Apple 登录或内购,再给这个 App ID 开对应 capabilities。
主 App Bundle ID
先在 products/01mvp/apps/mobile/app.json 里定好:
{
"expo": {
"scheme": "yourapp",
"ios": {
"bundleIdentifier": "com.yourcompany.yourapp"
},
"android": {
"package": "com.yourcompany.yourapp"
}
}
}然后在 Apple Developer 里注册同一个 Bundle ID:
https://developer.apple.com/account/resources/identifiers/list注册时选择:
Identifiers点加号。- 选择
App IDs。 - 选择
App。 - 选择
Explicit App ID。 - 填
com.yourcompany.yourapp。 - 勾选当前需要的 capabilities。
- Register。
Explicit App ID 更适合正式产品,因为登录、推送、内购、App Group 这些能力都需要明确绑定到具体 App 身份。
Capabilities 怎么开
| 能力 | 移动端场景 | 文档提醒 |
|---|---|---|
| Sign in with Apple | App 内 Apple 原生登录。 | 还要在 Better Auth / OAuth 配置里接回调。 |
| Push Notifications | 服务端向 App 发远程推送。 | Expo Go 无法完整验证,应该用 development build。 |
| Associated Domains | Universal Links、网页域名和 App 双向绑定。 | 还要配置网站端的 association 文件。 |
| App Groups | 主 App 和 Widget / extension 共享数据。 | 主 App 和 Widget target 都要绑定同一个 group。 |
| In-App Purchase | App Store 内购和订阅。 | RevenueCat、商店产品和服务端会员权益要对齐。 |
只开当前用到的能力。每多一个 capability,都要多一层签名、测试、审核和隐私说明。
Widget 和 App Group
默认 mobile 模板不带 Widget。如果你要加 iOS 小组件,至少会有三类 identifier:
com.yourcompany.yourapp
com.yourcompany.yourapp.widgets
group.com.yourcompany.yourapp主 App 和 Widget 是两个 target,所以 Bundle ID 不能共用。App Group 是它们之间的共享容器。
配置顺序:
- 注册主 App ID,勾选 App Groups。
- 注册 Widget App ID,也勾选 App Groups。
- 注册
group.com.yourcompany.yourapp。 - 回到主 App ID 和 Widget App ID,把这个 App Group 都绑定上。
- 在
app.json的相关 Expo plugin 里写入 Widget Bundle ID 和 group identifier。
Deep Link 和 Universal Links
scheme 和 Universal Links 不是一回事。
| 类型 | 示例 | 适合 |
|---|---|---|
| Custom scheme | yourapp://auth/callback | App 内跳转、OAuth 回跳、开发期更容易跑通 |
| Universal Link | https://yourapp.com/app/invite | 用户从网页、邮件、短信点击后进入 App |
01MVP mobile 默认先用 EXPO_PUBLIC_APP_SCHEME 处理移动端回跳。等你需要从网页自然打开 App,再接 Associated Domains 和 Universal Links。
检查清单
app.json的ios.bundleIdentifier和 Apple Developer App ID 一致。EXPO_PUBLIC_APP_SCHEME和app.json的expo.scheme一致。- 当前真正需要的 capabilities 已开启。
- Widget 有独立 Bundle ID。
- App Group 已绑定到所有需要共享数据的 target。
- 改 capabilities 后重新做 development build 或 preview build。
官方参考
这篇文档有问题?