asc-promoted-purchases 用于通过 asc CLI 工具管理 App Store 产品页的推广购买项(Promoted In-App Purchases),即在 App Store 应用产品页中展示的精选内购项目和自动续期订阅。每个推广槽位推广一个内购项目或一个订阅(二者互斥),并且与底层产品分开单独进入 App 审核流程。
主要能力 该技能围绕推广购买槽位提供四类命令能力:列表、创建、更新和删除。
列表: asc promoted-purchases list --app-id <APP_ID> [--limit N] [--pretty]
创建:创建时必须且只能提供 --iap-id 或 --subscription-id 之一,命令会校验并拒绝同时提供或都不提供的情况。 推广内购项目: asc promoted-purchases create --app-id <APP_ID> --iap-id <IAP_ID> --visible --enabled 推广自动续期订阅: asc promoted-purchases create --app-id <APP_ID> --subscription-id <SUB_ID> --hidden --disabled 其中 --visible / --hidden 切换 isVisibleForAllUsers,--enabled / --disabled 切换 isEnabled。默认情况下 isVisibleForAllUsers=true;当两个标志都省略时,isEnabled 保持不变。
更新: asc promoted-purchases update --promoted-id <PROMOTED_ID> [--visible | --hidden] [--enabled | --disabled] 省略某个标志对时,该字段保持不变。
删除: asc promoted-purchases delete --promoted-id <PROMOTED_ID>
状态语义 PromotedPurchaseState 暴露语义化布尔值:isLocked 在状态为 WAITING_FOR_REVIEW、IN_REVIEW 时为 true;isApproved 在状态为 APPROVED 时为 true。
状态感知的可用操作 JSON 响应会抑制 App Store Connect 会以 409 冲突拒绝的变更操作。当状态为 approved、rejected、prepareForSubmission 或 developerActionNeeded 时,update 链接和 delete 链接均会显示;当状态为 waitingForReview 或 inReview(即 state.isLocked)时,两者均被抑制。响应中的 affordances 字段会给出 listSiblings、update 和 delete 的可用命令,处于审核中时 update 与 delete 会被省略。
解析 App ID 可参考 project-context.md,在询问用户或运行 asc apps list 之前先检查 .asc/project.json。
典型工作流
先从 .asc/project.json 中读取 appId:
APP_ID=$(cat .asc/project.json 2>/dev/null | jq -r '.appId // empty')
创建推广槽位并获取其 ID:
PROMO_ID=$(asc promoted-purchases create --app-id "$APP_ID"
--iap-id "iap-1" --visible --enabled
| jq -r '.data[0].id')
临时隐藏而不删除:
asc promoted-purchases update --promoted-id "$PROMO_ID" --hidden
或者直接移除该槽位:
asc promoted-purchases delete --promoted-id "$PROMO_ID"
适用场景 适用于需要管理 App Store 产品页推广购买项的开发者或运营人员,例如列出当前推广槽位、推广某个内购项目或自动续期订阅、临时隐藏某个槽位、按审核状态决定是否可更新或删除等。
限制 仅覆盖资料中列出的命令与状态语义;更完整的领域模型与 REST 细节需参见 docs/features/promoted-purchases.md,该文档内容暂未提供。其他未在资料中说明的收费、价格、平台等信息暂未提供。