Expanding automation with the App Store Connect API
App Store & Distribution 进阶 28m

用 App Store Connect API 扩展自动化能力

Expanding automation with the App Store Connect API

2020年6月24日

在 Apple 官方观看视频

一句话判断

如果你还在手动管理 TestFlight 测试员、逐个填写 App Store 提交信息,这场 Session 会让你重新审视整个发布流程——App Store Connect API 在 2020 年大幅扩展,覆盖了从提交到发布的几乎全链路。

这场 Session 讲了什么

App Store Connect API 自 WWDC 2018 首次推出以来,一直以 REST API 的形式存在,但功能覆盖有限。2020 年苹果做了大幅扩展,新增了大量端点,涵盖 App 信息管理、Beta 测试、提交审核、版本发布等核心流程。

Session 详细介绍了 API 的认证机制(基于 JWT 的 Token),以及如何用 API Key 在 App Store Connect 中生成和管理证书。关键变化包括:新增了 App 信息编辑(标题、描述、关键词等本地化信息)、TestFlight Beta 测试的完整管理、构建版本处理、提交审核以及发布控制等端点。这意味着 CI/CD 管道可以直接调用 API 完成从构建上传到提交审核的全流程自动化。

值得深挖的点

JWT Token 认证体系。 App Store Connect API 使用 JSON Web Token 进行身份验证,Token 中编码了颁发者 ID、过期时间和作用域。每个 API Key 绑定特定权限(Admin、App Manager、Developer 等),Token 最长有效期为 20 分钟。在自动化场景中需要设计 Token 刷新策略,避免因 Token 过期导致流水线中断。

从手动操作到全自动发布流水线。 过去很多团队用 Fastlane 的 Spaceship 来做 App Store Connect 的自动化,但 Spaceship 本质是网页抓取,稳定性和维护成本一直是痛点。官方 API 的扩展意味着你可以用更可靠的方式实现同样的目标,而且不需要逆向工程网页接口。

代码片段

// App Store Connect API 使用 JWT 认证
// Token 的 Header 部分
let header: [String: Any] = [
    "alg": "ES256",  // 使用椭圆曲线算法
    "kid": "你的 API Key ID",
    "typ": "JWT"
]

// Token 的 Payload 部分
let payload: [String: Any] = [
    "iss": "你的颁发者 ID",  // 在 App Store Connect > Keys 页面获取
    "exp": Int(Date().addingTimeInterval(20 * 60).timeIntervalSince1970),  // 最长 20 分钟
    "aud": "appstoreconnect-v1"
]
# 使用 curl 调用 API 获取 App 列表
curl -v -H "Authorization: Bearer <你的JWT_TOKEN>" \
  "https://api.appstoreconnect.apple.com/v1/apps"
# 提交 App 审核
curl -X POST \
  -H "Authorization: Bearer <你的JWT_TOKEN>" \
  -H "Content-Type: application/json" \
  -d '{
    "data": {
      "type": "appStoreVersions",
      "attributes": {
        "versionString": "2.0.0"
      },
      "relationships": {
        "app": {
          "data": { "type": "apps", "id": "你的App ID" }
        }
      }
    }
  }' \
  "https://api.appstoreconnect.apple.com/v1/appStoreVersions"

最佳实践

  • 为 CI/CD 流水线创建专用 API Key。 不要复用个人账号的 Key,给每条流水线创建独立的 Key 并授予最小权限(如 App Manager),这样可以在 Key 泄露时快速撤销而不影响其他流水线。
  • Token 刷新要做好容错。 Token 有效期最长 20 分钟,长时间运行的流水线需要在 Token 过期前主动刷新。建议在每次 API 调用前检查 Token 是否即将过期。
  • 优先用官方 API 替代 Spaceship。 Spaceship 依赖网页结构,每次 App Store Connect 改版都可能导致脚本失效。官方 API 更稳定且有版本管理。
  • 将 App 元数据本地化纳入自动化。 新增的 App 信息编辑端点支持多语言,可以把本地化字符串文件和 CI 流程打通,确保每次发版时所有语言的描述都同步更新。

还有什么值得关注

  • API 支持管理 Beta 测试组和测试员,可以基于用户群组自动分配构建版本
  • 构建版本的处理(Processing)状态可以通过 API 查询,方便在流水线中等待处理完成后再提交审核
  • API 支持管理沙盒测试员(Sandbox Testers)和订阅测试场景,对内购测试的自动化很有帮助
  • 苹果同时发布了 OpenAPI 规范文档,可以用来生成各种语言的客户端 SDK
WWDC 2020