mcpField
A
asc-availability

asc-availability

github.com/tddworks开发585 次安装6 周前更新
代码仓库

关于 asc-availability

通过 `asc` 命令行工具查看和管理 App、内购及订阅在各地区的可用性,帮助开发者排查销售限制并配置市场范围。

主要功能

  1. 01查看 App 可用性及受限原因
  2. 02按地区设置 App 可用性
  3. 03管理内购和订阅的销售地区
  4. 04列出地区 ID 与货币
  5. 05自动纳入新增地区

适用场景

  1. 01排查 App 在某地区无法销售的原因
  2. 02限制内购或订阅的销售市场
  3. 03在新增地区开放产品销售

安装

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

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

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

详细介绍

App、IAP 和订阅的地区可用性

管理 App、应用内购买项目或订阅在哪些 App Store 地区(国家/地区)可用。这对于控制地区分发至关重要,例如了解 App 为何在某些国家/地区被屏蔽、将订阅限制在特定市场,或让 IAP 在全球范围内可用。

App 可用性(按地区显示状态)

最详细的可用性视图——显示每个地区的 isAvailable(true/false)、通过 contentStatuses 显示的屏蔽原因、releaseDate 和 isPreOrderEnabled。

asc app-availability get --app-id <APP_ID> [--pretty]

如果尚未设置 App 的可用性(App Store Connect 显示 设置可用性),此命令会返回 {"data":[]} 并显示提示。请按以下步骤设置:

asc app-availability create --app-id <APP_ID> --all-territories --available-in-new-territories
asc app-availability create --app-id <APP_ID> --territory USA --territory JPN [--available-in-new-territories]

传入 --territory(可重复传入)或 --all-territories(包含 asc territories list 中的所有地区)。REST:使用 {"territory": [...]} 或 {"all-territories": true} 调用 POST /api/v1/apps/:appId/availability。尚未发布的 App 在每个地区都会显示 CANNOT_SELL + AVAILABLE_FOR_SALE_UNRELEASED_APP——在发布之前这是预期行为。

此命令会返回全部约 175 个地区及其状态。contentStatuses 的主要取值:

  • AVAILABLE — 正常销售
  • CANNOT_SELL_RESTRICTED_RATING — 年龄分级阻止该地区销售
  • MISSING_RATING — 未配置年龄分级
  • ICP_NUMBER_MISSING — 中国要求提供 ICP 备案号
  • BRAZIL_REQUIRED_TAX_ID — 巴西要求提供税号
  • CANNOT_SELL_GAMBLING / CANNOT_SELL_CASINO — 赌博相关限制
  • 另外还有 30 多种更具体的屏蔽原因

列出所有地区

设置可用性之前,请先查找有效的地区 ID。Apple 有约 175 个地区,每个地区都有一个 ISO 风格的 ID(例如 USA、CHN、JPN)和货币代码。

asc territories list [--output table] [--pretty]

输出示例:

ID    Currency
USA   USD
CHN   CNY
JPN   JPY
GBR   GBP
DEU   EUR
...

IAP 可用性

获取当前 IAP 可用性

检查 IAP 当前在哪些地区可用。响应中包含每个地区的货币代码。

asc iap-availability get --iap-id <IAP_ID> [--pretty]

JSON 响应示例:

{
  "data": [
    {
      "id": "avail-1",
      "iapId": "iap-42",
      "isAvailableInNewTerritories": true,
      "territories": [
        { "id": "USA", "currency": "USD" },
        { "id": "CHN", "currency": "CNY" }
      ],
      "affordances": {
        "getAvailability": "asc iap-availability get --iap-id iap-42",
        "createAvailability": "asc iap-availability create --iap-id iap-42 ...",
        "listTerritories": "asc territories list"
      }
    }
  ]
}
创建 IAP 可用性

设置 IAP 应在哪些地区可用。使用 --territory(可重复传入)指定各地区 ID,并使用 --available-in-new-territories 自动纳入 Apple 未来新增的地区。

asc iap-availability create \
  --iap-id <IAP_ID> \
  --available-in-new-territories \
  --territory USA \
  --territory CHN \
  --territory JPN
标志必填说明
--iap-id是要设置可用性的 IAP ID
--available-in-new-territories否自动纳入 Apple 新增的地区
--territory否地区 ID(可重复传入)。使用 asc territories list 查找有效 ID

订阅可用性

获取当前订阅可用性
asc subscription-availability get --subscription-id <SUB_ID> [--pretty]
创建订阅可用性
asc subscription-availability create \
  --subscription-id <SUB_ID> \
  --available-in-new-territories \
  --territory USA \
  --territory GBR
标志必填说明
--subscription-id是要设置可用性的订阅 ID
--available-in-new-territories否自动纳入 Apple 新增的地区
--territory否地区 ID(可重复传入)

CAEOAS 便捷操作

每个可用性响应都包含可直接运行的后续命令:

{
  "affordances": {
    "getAvailability": "asc iap-availability get --iap-id <ID>",
    "createAvailability": "asc iap-availability create --iap-id <ID> ...",
    "listTerritories": "asc territories list"
  }
}

InAppPurchase 和 Subscription 模型还包含 getAvailability 便捷操作,可从父资源导航到可用性信息。

解析 App ID

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

典型工作流

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

# 1. Discover territories
asc territories list --output table

# 2. List IAPs for the app
asc iap list --app-id "$APP_ID"

# 3. Check current availability
asc iap-availability get --iap-id "$IAP_ID" --pretty

# 4. Set availability to specific territories with auto-include for future ones
asc iap-availability create --iap-id "$IAP_ID" \
  --available-in-new-territories \
  --territory USA --territory GBR --territory DEU --territory JPN

# Same flow for subscriptions:
asc subscriptions list --group-id "$GROUP_ID"
asc subscription-availability get --subscription-id "$SUB_ID"
asc subscription-availability create --subscription-id "$SUB_ID" \
  --available-in-new-territories \
  --territory USA --territory CHN

核心概念

  • 地区 ID:App Store Connect 使用的 ISO 风格国家/地区代码(例如 USA、CHN、JPN、GBR)。使用 asc territories list 查看所有有效 ID。
  • isAvailableInNewTerritories:设为 true 时,Apple 会自动让 IAP/订阅在其新增的任何地区可用。除非需要严格控制地区范围,否则大多数 App 都建议启用此选项。
  • 货币:每个地区都有对应的货币(例如 USD、CNY)。可用性响应会在地区 ID 旁显示货币,便于了解定价所用的货币。

评论

支持 Markdown