asc-app-create-ui

asc-app-create-ui

热门

通过浏览器自动化创建新的 App Store Connect 应用记录。适用于 Apple 未提供公开 App 创建 API,需要由 Agent 自动操作“新建 App”表单的场景。

950Star
50Fork
更新于 2026/8/5
SKILL.md
只读
名称
asc-app-create-ui
描述

通过浏览器自动化创建新的 App Store Connect 应用记录。适用于 Apple 未提供公开 App 创建 API,需要由 Agent 自动操作“新建 App”表单的场景。

asc app create(UI 自动化)

使用此 Skill 可通过操作 Web 界面来创建新的 App Store Connect 应用。
这是一个需手动开启(opt-in)、仅在本地运行的自动化流程,且要求用户处于已登录状态。

前置条件

  • 具备可用的浏览器自动化工具(Playwright、Cursor browser MCP 或同等工具)。
  • 用户已登录 App Store Connect(或能够完成登录及双重认证 2FA)。
  • Bundle ID 必须已在 Apple Developer Portal 完成注册
  • 已准备好必要的输入参数:
    • 应用名称(应用名称,最多 30 个字符)
    • Bundle ID(必须已存在且未被其它应用占用)
    • SKU
    • 平台(iOS、macOS、tvOS、visionOS)
    • 主要语言(Primary Language)
    • 用户访问权限(User Access:Full Access 或 Limited Access)

安全准则

  • 严禁导出或存储 Cookie。
  • 仅使用可视化的浏览器会话(Visible Browser Session)。
  • 在点击“创建”按钮前暂停并等待最终确认(适用于独立运行脚本)。
  • 失败时切勿自动重试“创建”操作。

操作流程

1. 预检:注册 Bundle ID 并确认尚无应用记录

# 若尚未注册,通过公开 API 注册 Bundle ID
asc bundle-ids create --identifier "com.example.app" --name "My App" --platform IOS

# 确认当前尚无对应的 App 记录
asc apps list --bundle-id "com.example.app" --output json

2. 打开 App Store Connect

导航至 https://appstoreconnect.apple.com/apps 并确认用户已登录。

3. 打开“新建 App”表单

“新建 App”按钮(蓝色“+”图标)触发的是一个下拉菜单,而不是直接弹出一级对话框。

  • 点击“新建 App”按钮打开下拉菜单。
  • 点击下拉菜单中的“新建 App”菜单项
  • 此时会出现创建对话框/弹窗。

4. 依次填写必填字段

平台 (Platform)(复选框)

平台选项为复选框(并非单选框)。勾选所需平台:

  • iOS, macOS, tvOS, visionOS
  • 支持多选。
名称 (Name)(文本输入框)
  • 标签:Name
  • 最多 30 个字符。
主要语言 (Primary Language)(下拉选择框)
  • 标签:Primary Language
  • 使用 select_option 或同等方法配合语言标签文本(例如 "English (U.S.)")。
Bundle ID(下拉选择框)
  • 标签:Bundle ID
  • 这是一个 <select> 下拉菜单。选择平台后,选项列表会异步加载。
  • 等待下拉菜单完成加载(初始状态会显示 "Loading...")。
  • 通过匹配包含名称和标识符的完整标签文本进行选择:
    "My App - com.example.app"
SKU(文本输入框)
  • 标签:SKU
用户访问权限 (User Access)(单选按钮)—— 必填
  • 此字段为必填项。 未选择选项前,“创建”按钮将保持禁用状态。
  • 选项:Limited AccessFull Access
  • 这些是带 <span> 覆盖层的自定义单选按钮。
  • 已知问题: 基于无障碍(Accessibility)的点击可能会被覆盖层 <span> 拦截。
  • 变通方案: 先对单选框元素调用 scrollIntoView,然后直接点击单选框的 ref 引用。这样可以绕过覆盖层的拦截。

5. 点击“创建”

  • 在填满所有必填字段选定用户访问权限之前,“创建”按钮一直处于禁用状态。
  • 点击后,处理过程中按钮文本会变为 "Creating"。
  • 等待页面跳转至新应用的管理页面(URL 模式:/apps/<APP_ID>/...)。

6. 通过 API 验证创建结果

asc apps view --id "APP_ID" --output json --pretty
# 或
asc apps list --bundle-id "com.example.app" --output json

7. 转交至后续配置

asc app-setup info set --app "APP_ID" --primary-locale "en-US"
asc app-setup categories set --app "APP_ID" --primary GAMES
asc pricing availability create \
  --app "APP_ID" \
  --territory "USA,GBR" \
  --available true \
  --available-in-new-territories true

仅在首次初始化上架地区时使用 asc pricing availability create。若应用的可提供性配置已存在,后续修改地区请改用 asc pricing availability edit --app "APP_ID" ...

已知 UI 自动化问题

“新建 App”是个下拉菜单,而非直接触发的动作

首次点击会打开包含“新建 App”和“新建 App 组合”的菜单。必须点击具体的菜单项,而不能仅点击按钮。

用户访问权限单选按钮存在 span 覆盖层

Apple 的自定义单选按钮使用内含样式化的 <span> 元素包裹 <input type="radio">。直接基于 ref 的点击可能会触发“点击目标被拦截(click target intercepted)”错误。修复方法如下:

  1. 将单选元素滚动到视野内(scrollIntoView)。
  2. 直接点击单选框 ref 引用(而非通过偏移量或点击 label)。

Bundle ID 下拉框异步加载

选择平台后,Bundle ID 下拉框会显示 "Loading..." 并处于禁用状态。需等待其变为可用状态且加载出选项后再进行选择。

browser_fill 可能无法触发表单校验

Apple 的 Ember.js 表单使用了自定义 Change 事件处理程序。browser_fill(原子级赋值)可能无法触发校验。如果填满所有字段后“创建”按钮仍处于禁用状态:

  • 在至少一个文本框中逐字(字符级)重新输入值。
  • 或点击该字段,清空后再缓慢输入。

异常处理

  • 若无法定位任何字段或按钮,请暂停并请求用户人工协助。
  • 截取当前屏幕截图并汇报最后已知的步骤。
  • 请勿自动重试“创建”点击操作。
  • 发生故障时,用户应在浏览器中检查表单校验错误(红框提示、行内提示信息等)。

注意事项

  • 本 Skill 是应对 Apple 缺乏公开 API 的变通方案。Apple 官方文档明确指出:“请勿使用此 API 创建新 App;相反,请在 App Store Connect 网站上创建新 App。”
  • UI 选择器可能在无预警情况下发生变更。相比 CSS 选择器,建议优先使用 role/label/text 等语义化选择器。
  • 唯一需要人工干预的步骤应为登录,其余步骤均可由 Agent 自动化驱动。