通过浏览器自动化创建新的 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 Access或Full 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)”错误。修复方法如下:
- 将单选元素滚动到视野内(
scrollIntoView)。 - 直接点击单选框 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 自动化驱动。






