asc-beta-review

Compare original and translation side by side

🇺🇸

Original

English
🇨🇳

Translation

Chinese

Beta App Review with
asc

使用
asc
管理Beta应用审核

Submit builds for TestFlight external testing review and manage beta review contact details. Apple requires beta app review before distributing builds to external testers via TestFlight.
提交构建版本用于TestFlight外部测试审核,并管理Beta审核联系详情。苹果要求通过TestFlight向外部测试人员分发构建版本前,必须先完成Beta应用审核。

Authentication

身份验证

Set up credentials before any beta review commands:
bash
asc auth login --key-id <id> --issuer-id <id> --private-key-path ~/.asc/AuthKey.p8
在执行任何Beta审核命令前,请先配置凭证:
bash
asc auth login --key-id <id> --issuer-id <id> --private-key-path ~/.asc/AuthKey.p8

CAEOAS — Affordances Guide Next Steps

CAEOAS — 可用操作指南后续步骤

Every JSON response includes
"affordances"
with ready-to-run commands:
BetaAppReviewSubmission affordances:
json
{
  "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:
json
{
  "id": "d-xyz789",
  "appId": "app-1",
  "contactFirstName": "John",
  "contactEmail": "john@example.com",
  "demoAccountRequired": false,
  "affordances": {
    "getDetail": "asc beta-review detail get --app-id app-1",
    "updateDetail": "asc beta-review detail update --detail-id d-xyz789"
  }
}
Nil optional fields (
contactFirstName
,
contactLastName
,
contactPhone
,
contactEmail
,
demoAccountName
,
demoAccountPassword
,
notes
) are omitted from JSON output.
每个JSON响应都包含
"affordances"
字段,提供可直接运行的命令:
BetaAppReviewSubmission可用操作:
json
{
  "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可用操作:
json
{
  "id": "d-xyz789",
  "appId": "app-1",
  "contactFirstName": "John",
  "contactEmail": "john@example.com",
  "demoAccountRequired": false,
  "affordances": {
    "getDetail": "asc beta-review detail get --app-id app-1",
    "updateDetail": "asc beta-review detail update --detail-id d-xyz789"
  }
}
可选字段(
contactFirstName
contactLastName
contactPhone
contactEmail
demoAccountName
demoAccountPassword
notes
)若为Nil,则不会出现在JSON输出中。

Commands

命令

submissions list — list beta review submissions for a build

submissions list — 列出某构建版本的Beta审核提交记录

bash
asc beta-review submissions list --build-id <BUILD_ID> [--pretty]
bash
asc beta-review submissions list --build-id <BUILD_ID> [--pretty]

submissions create — submit a build for beta review

submissions create — 提交构建版本用于Beta审核

bash
asc beta-review submissions create --build-id <BUILD_ID> [--pretty]
Creates a new beta app review submission. The build enters
WAITING_FOR_REVIEW
state.
bash
asc beta-review submissions create --build-id <BUILD_ID> [--pretty]
创建一条新的Beta应用审核提交记录,该构建版本将进入
WAITING_FOR_REVIEW
状态。

submissions get — get a specific submission

submissions get — 获取特定提交记录

bash
asc beta-review submissions get --submission-id <SUBMISSION_ID> [--pretty]
bash
asc beta-review submissions get --submission-id <SUBMISSION_ID> [--pretty]

detail get — get beta review contact details for an app

detail get — 获取某应用的Beta审核联系详情

bash
asc beta-review detail get --app-id <APP_ID> [--pretty]
Returns the beta app review detail record (contact info and demo account) for the app. Each app has one beta review detail record.
bash
asc beta-review detail get --app-id <APP_ID> [--pretty]
返回该应用的Beta应用审核详情记录(联系信息及演示账户)。每个应用对应一条Beta审核详情记录。

detail update — update beta review contact details

detail update — 更新Beta审核联系详情

bash
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>]
Only supplied flags are sent — unspecified fields are left unchanged.
bash
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>]
仅会发送已指定的参数——未指定的字段将保持不变。

BetaReviewState

BetaReviewState

StateDescription
WAITING_FOR_REVIEW
Submitted, waiting for Apple review
IN_REVIEW
Currently being reviewed
APPROVED
Approved for external testing
REJECTED
Rejected — fix issues and resubmit
Semantic booleans:
isPending
,
isInReview
,
isApproved
,
isRejected
.
状态描述
WAITING_FOR_REVIEW
已提交,等待苹果审核
IN_REVIEW
正在审核中
APPROVED
已通过审核,可用于外部测试
REJECTED
已被驳回——修复问题后重新提交
语义布尔值:
isPending
isInReview
isApproved
isRejected

Typical Workflow

典型工作流

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

1. Upload a build

1. 上传构建版本

asc builds upload --file MyApp.ipa
asc builds upload --file MyApp.ipa

2. Add the build to an external beta group

2. 将构建版本添加至外部Beta测试组

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"
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)

3. 配置Beta审核联系详情(首次操作)

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 "john@example.com"
--contact-phone "+1-555-0100"
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 "john@example.com"
--contact-phone "+1-555-0100"

4. Submit the build for beta app review

4. 提交构建版本用于Beta应用审核

asc beta-review submissions create --build-id "$BUILD_ID" --pretty
asc beta-review submissions create --build-id "$BUILD_ID" --pretty

5. Check submission status

5. 检查提交状态

asc beta-review submissions list --build-id "$BUILD_ID" --pretty
undefined
asc beta-review submissions list --build-id "$BUILD_ID" --pretty
undefined

Key Computed Properties (BetaAppReviewDetail)

关键计算属性(BetaAppReviewDetail)

PropertyLogic
hasContact
contactEmail != nil && contactPhone != nil
demoAccountConfigured
!demoAccountRequired || (name != nil && password != nil)
属性逻辑
hasContact
contactEmail != nil && contactPhone != nil
demoAccountConfigured
`!demoAccountRequired

Resolve App ID

解析App ID

See project-context.md — check
.asc/project.json
before asking the user or running
asc apps list
.
请查看project-context.md — 在询问用户或运行
asc apps list
前,先检查
.asc/project.json
文件。

Output Flags

输出标志

bash
--pretty          # Pretty-print JSON
--output table    # Table format
--output markdown # Markdown table
bash
--pretty          # 格式化输出JSON
--output table    # 表格格式
--output markdown # Markdown表格格式