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

注册时选择:

  1. Identifiers 点加号。
  2. 选择 App IDs
  3. 选择 App
  4. 选择 Explicit App ID
  5. com.yourcompany.yourapp
  6. 勾选当前需要的 capabilities。
  7. Register。

Explicit App ID 更适合正式产品,因为登录、推送、内购、App Group 这些能力都需要明确绑定到具体 App 身份。

Capabilities 怎么开

能力移动端场景文档提醒
Sign in with AppleApp 内 Apple 原生登录。还要在 Better Auth / OAuth 配置里接回调。
Push Notifications服务端向 App 发远程推送。Expo Go 无法完整验证,应该用 development build。
Associated DomainsUniversal Links、网页域名和 App 双向绑定。还要配置网站端的 association 文件。
App Groups主 App 和 Widget / extension 共享数据。主 App 和 Widget target 都要绑定同一个 group。
In-App PurchaseApp 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 是它们之间的共享容器。

配置顺序:

  1. 注册主 App ID,勾选 App Groups。
  2. 注册 Widget App ID,也勾选 App Groups。
  3. 注册 group.com.yourcompany.yourapp
  4. 回到主 App ID 和 Widget App ID,把这个 App Group 都绑定上。
  5. app.json 的相关 Expo plugin 里写入 Widget Bundle ID 和 group identifier。

scheme 和 Universal Links 不是一回事。

类型示例适合
Custom schemeyourapp://auth/callbackApp 内跳转、OAuth 回跳、开发期更容易跑通
Universal Linkhttps://yourapp.com/app/invite用户从网页、邮件、短信点击后进入 App

01MVP mobile 默认先用 EXPO_PUBLIC_APP_SCHEME 处理移动端回跳。等你需要从网页自然打开 App,再接 Associated Domains 和 Universal Links。

检查清单

  • app.jsonios.bundleIdentifier 和 Apple Developer App ID 一致。
  • EXPO_PUBLIC_APP_SCHEMEapp.jsonexpo.scheme 一致。
  • 当前真正需要的 capabilities 已开启。
  • Widget 有独立 Bundle ID。
  • App Group 已绑定到所有需要共享数据的 target。
  • 改 capabilities 后重新做 development build 或 preview build。

官方参考

这篇文档有问题?