mcpField
A
asc-beta-review

asc-beta-review

github.com/tddworks测试与质量587 次安装5 周前更新
代码仓库

关于 asc-beta-review

asc-beta-review 是通过 `asc` 命令行管理 Apple Beta 应用审核及相关 TestFlight 信息的技能。它可提交构建版本、跟踪审核状态、编辑联系人信息,并维护各语言的 Beta 应用描述。

主要功能

  1. 01创建并查看 Beta 审核提交
  2. 02管理审核联系人和演示账户信息
  3. 03列出并更新 Beta 应用本地化内容
  4. 04利用响应中的后续命令提示

适用场景

  1. 01提交构建版本以供 TestFlight 外部测试审核
  2. 02查看提交是否获批或被拒
  3. 03更新审核联系人或演示账户信息
  4. 04维护面向 TestFlight 测试者的本地化描述

安装

复制下面的命令,在终端中运行。

$npx skills add https://github.com/tddworks/asc-cli-skills --skill asc-beta-review

安装后在 Claude Code 中输入/asc-beta-review确认已加载。

详细介绍

使用 asc 进行 Beta App 审核

提交构建版本以供 TestFlight 外部测试审核,并管理 Beta 审核联系人信息。Apple 要求先通过 Beta App 审核,才能通过 TestFlight 向外部测试人员分发构建版本。

身份验证

在运行任何 Beta 审核命令之前,请先设置凭据:

asc auth login --key-id <id> --issuer-id <id> --private-key-path ~/.asc/AuthKey.p8

CAEOAS — 根据功能提示引导下一步操作

每个 JSON 响应都包含 "affordances",其中提供可直接运行的命令:

BetaAppReviewSubmission affordances:

{
  "id": "sub-abc123",
  "buildId": "build-42",
  "state": "WAITING_FOR_REVIEW",
  "affordances": {
    "getSubmission": "asc beta-review submissions get --submission-id sub-abc123",
    "listSubmissions": "asc beta-review submissions list --build-id build-42"
  }
}

BetaAppReviewDetail affordances:

{
  "id": "d-xyz789",
  "appId": "app-1",
  "contactFirstName": "John",
  "contactEmail": "[email protected]",
  "demoAccountRequired": false,
  "affordances": {
    "getDetail": "asc beta-review detail get --app-id app-1",
    "updateDetail": "asc beta-review detail update --detail-id d-xyz789"
  }
}

值为 nil 的可选字段(contactFirstName、contactLastName、contactPhone、contactEmail、demoAccountName、demoAccountPassword、notes)会从 JSON 输出中省略。

命令

submissions list — 列出某个构建版本的 Beta 审核提交
asc beta-review submissions list --build-id <BUILD_ID> [--pretty]
submissions create — 提交构建版本以供 Beta 审核
asc beta-review submissions create --build-id <BUILD_ID> [--pretty]

创建新的 Beta App 审核提交。构建版本将进入 WAITING_FOR_REVIEW 状态。

submissions get — 获取特定提交
asc beta-review submissions get --submission-id <SUBMISSION_ID> [--pretty]
detail get — 获取某个 App 的 Beta 审核联系人信息
asc beta-review detail get --app-id <APP_ID> [--pretty]

返回该 App 的 Beta App 审核详细记录(联系人信息和演示账户)。每个 App 只有一条 Beta 审核详细记录。

detail update — 更新 Beta 审核联系人信息
asc beta-review detail update --detail-id <DETAIL_ID> \
  [--contact-first-name <name>] \
  [--contact-last-name <name>] \
  [--contact-phone <phone>] \
  [--contact-email <email>] \
  [--demo-account-name <username>] \
  [--demo-account-password <password>] \
  [--demo-account-required] \
  [--notes <text>]

仅发送已提供的标志;未指定的字段保持不变。

Beta App 本地化 — asc beta-app-localizations

按地区提供 Beta App 描述、测试人员反馈邮箱、营销 URL 和隐私政策 URL,这些信息会显示给 TestFlight 测试人员。Apple 要求在开放外部测试前提供这些信息;主要地区缺少描述或描述为空,是外部测试提交被拒最常见的原因。

与现有命令的用途不同:

  • asc beta-review detail → App 级审核联系人信息和演示账户
  • asc builds update-beta-notes → 每个构建版本的“测试内容”说明
  • asc beta-app-localizations → 按地区提供的 Beta App 描述(本节)
# List existing beta localizations for an app
asc beta-app-localizations list --app-id <APP_ID> [--pretty]

# Get a single localization
asc beta-app-localizations get --localization-id <ID>

# Create a new localization (Apple auto-creates one for the primary locale)
asc beta-app-localizations create \
  --app-id <APP_ID> \
  --locale en-US \
  [--description <text>] \
  [--feedback-email <email>] \
  [--marketing-url <url>] \
  [--privacy-policy-url <url>] \
  [--tv-os-privacy-policy <text>]

# Patch — only supplied flags are sent; omitted fields unchanged
asc beta-app-localizations update \
  --localization-id <ID> \
  [--description <text>] \
  [--feedback-email <email>] \
  [--marketing-url <url>] \
  [--privacy-policy-url <url>]

# Delete (e.g. removing a no-longer-supported locale)
asc beta-app-localizations delete --localization-id <ID>

每个本地化项支持以下 affordances:delete、get、listSiblings(asc beta-app-localizations list --app-id <appId>)、update。

完整参考请参见 docs/features/beta-app-localizations.md。

BetaReviewState

状态描述
WAITING_FOR_REVIEW已提交,等待 Apple 审核
IN_REVIEW正在审核
APPROVED已获准进行外部测试
REJECTED已拒绝 — 修复问题后重新提交

语义布尔值:isPending、isInReview、isApproved、isRejected。

典型工作流

APP_ID=$(cat .asc/project.json 2>/dev/null | jq -r '.appId // empty')

# 1. Upload a build
asc builds upload --file MyApp.ipa

# 2. Add the build to an external beta group
BUILD_ID=$(asc builds list --app-id "$APP_ID" | jq -r '.data[0].id')
GROUP_ID=$(asc testflight groups list --app-id "$APP_ID" | jq -r '.data[] | select(.isInternalGroup == false) | .id' | head -1)
asc builds add-beta-group --build-id "$BUILD_ID" --beta-group-id "$GROUP_ID"

# 3. Set up beta review contact details (first time)
asc beta-review detail get --app-id "$APP_ID" --pretty
DETAIL_ID=$(asc beta-review detail get --app-id "$APP_ID" | jq -r '.data[0].id')
asc beta-review detail update --detail-id "$DETAIL_ID" \
  --contact-first-name "John" \
  --contact-last-name "Doe" \
  --contact-email "[email protected]" \
  --contact-phone "+1-555-0100"

# 4. Set the Beta App Description for the primary locale (required for external testing)
EXISTING=$(asc beta-app-localizations list --app-id "$APP_ID" | jq -r '.data[] | select(.locale == "en-US") | .id')
if [ -z "$EXISTING" ]; then
  asc beta-app-localizations create --app-id "$APP_ID" --locale en-US \
    --description "Welcome to the beta — please test the new dashboard." \
    --feedback-email [email protected]
else
  asc beta-app-localizations update --localization-id "$EXISTING" \
    --description "Welcome to the beta — please test the new dashboard." \
    --feedback-email [email protected]
fi

# 5. Submit the build for beta app review
asc beta-review submissions create --build-id "$BUILD_ID" --pretty

# 6. Check submission status
asc beta-review submissions list --build-id "$BUILD_ID" --pretty

关键计算属性(BetaAppReviewDetail)

属性逻辑
hasContactcontactEmail != nil && contactPhone != nil
demoAccountConfigured!demoAccountRequired || (name != nil && password != nil)

确定 App ID

请参见 project-context.md — 在询问用户或运行 asc apps list 之前,先检查 .asc/project.json。

输出标志

--pretty          # Pretty-print JSON
--output table    # Table format
--output markdown # Markdown table

评论

支持 Markdown