Adapty 开发者 CLI 命令参考

本文列出了用于配置账户的 Adapty CLI 命令——包括应用、访问等级、产品、付费墙、流程、版位和市场细分——以及迁移 RevenueCat 项目和安装 Adapty 技能的命令,并附带其参数、标志和可接受的值。如需读取应用的分析数据,请参阅分析命令。如需管理 Apple Ads 广告活动,请参阅 Ads Manager 命令。

全局标志

这些标志适用于所有命令。

标志描述
--json以 JSON 格式输出,而非格式化文本
--help显示命令帮助

所有 list 命令还接受分页标志:

标志默认值描述
--page1页码
--page-size20每页条目数(最大:100)

应用

管理 Adapty 账户中的应用。有关基于看板的配置,请参阅 App settings。

adapty apps list

列出 Adapty 账户中的所有应用。

adapty apps list

接受分页标志。

adapty apps get

获取特定应用的详细信息。

adapty apps get <app-id>
参数描述
app-id应用 ID(UUID)

adapty apps create

创建新应用。

adapty apps create --title "My App" --platform ios --apple-bundle-id com.example.app
标志是否必填描述
--title是应用标题
--platform是平台:ios 或 android。重复使用以支持两者:--platform ios --platform android
--apple-bundle-id与 --platform ios 一起使用时必填Apple bundle ID
--google-bundle-id与 --platform android 一起使用时必填Google bundle ID

adapty apps update

更新现有应用。

adapty apps update <app-id> --title "New Name"
参数描述
app-id应用 ID(UUID)
标志描述
--title新的应用标题
--apple-bundle-id新的 Apple bundle ID
--google-bundle-id新的 Google bundle ID

至少需要一个标志。--platform 在创建后无法更改。

访问等级

adapty access-levels list

列出应用的所有访问等级。

adapty access-levels list --app <app-id>
标志是否必填描述
--app是应用 ID(UUID)

接受分页标志。

adapty access-levels get

获取特定访问等级的详细信息。

adapty access-levels get --app <app-id> <access-level-id>
参数描述
access-level-id访问等级 ID(UUID)
标志是否必填描述
--app是应用 ID(UUID)

adapty access-levels create

创建新的访问等级。

adapty access-levels create --app <app-id> --sdk-id "pro" --title "Pro"
标志是否必填描述
--app是应用 ID(UUID)
--sdk-id是应用代码中用于检查访问权限的标识符(例如 "pro" 或 "premium")
--title是Adapty 看板中的显示标签

adapty access-levels update

更新现有访问等级。

adapty access-levels update --app <app-id> <access-level-id> --title "Pro Access"
参数描述
access-level-id访问等级 ID(UUID)
标志是否必填描述
--app是应用 ID(UUID)
--title是新的显示标签

--sdk-id 在创建后无法更改。

产品

adapty products list

列出应用的所有产品。

adapty products list --app <app-id>
标志是否必填描述
--app是应用 ID(UUID)

接受分页标志。

adapty products get

获取特定产品的详细信息。

adapty products get --app <app-id> <product-id>
参数描述
product-id产品 ID(UUID)
标志是否必填描述
--app是应用 ID(UUID)

adapty products create

创建新产品。

Important

商店产品和价格 ID 在创建后无法更改。如需使用不同的商店 ID,请创建新产品。

adapty products create --app <app-id> --title "Monthly" --access-level-id <access-level-id> --period monthly --ios-product-id com.example.monthly
参数是否必填描述
--app是应用 ID(UUID)
--title是产品标题
--access-level-id是此产品解锁的访问等级 ID(UUID)
--period是订阅周期:weekly、monthly、two_months、trimonthly、semiannual、annual、lifetime
--ios-product-id至少需要一个应用商店App Store Connect 中的产品 ID
--android-product-id至少需要一个应用商店Google Play Console 中的产品 ID
--android-base-plan-id与 --android-product-id 一起使用时必填,--period lifetime 除外Google Play Console 中的基础方案 ID
--stripe-product-id至少需要一个应用商店Stripe 中的产品 ID
--stripe-price-id与 --stripe-product-id 一起使用时必填Stripe 中的价格 ID
--paddle-product-id至少需要一个应用商店Paddle 中的产品 ID
--paddle-price-id与 --paddle-product-id 一起使用时必填Paddle 中的价格 ID

每个产品至少需要关联一个商店:--ios-product-id、--android-product-id、--stripe-product-id 或 --paddle-product-id。一个产品可以同时携带多个商店的 ID。

如需通过 Stripe 或 Paddle 在网页端销售产品,请先将支付提供商连接到 Adapty:参见 Stripe 和 Paddle。对于这两个商店,需要同时传入产品 ID 和价格 ID,缺少其中任意一个命令都会失败。

adapty products create --app <app-id> --title "Monthly" --access-level-id <access-level-id> --period monthly --stripe-product-id prod_xxx --stripe-price-id price_xxx

仅限 Web 的产品是有效的:你可以创建一个只有 Stripe 或 Paddle ID、没有 App Store 或 Google Play ID 的产品。

adapty products update

更新现有产品。

商店产品 ID 和价格 ID 在创建后无法更改,且在此命令中不可用。如需使用不同的商店 ID,请创建新产品。

adapty products update --app <app-id> <product-id> --title "Monthly" --access-level-id <access-level-id>
参数描述
product-id产品 ID(UUID)
参数是否必填说明
--app是应用 ID(UUID)
--title否产品标题
--access-level-id否该产品解锁的访问等级 ID(UUID)

付费墙

adapty paywalls list

列出应用的所有付费墙。

adapty paywalls list --app <app-id>
标志是否必填描述
--app是应用 ID(UUID)

接受分页标志。

adapty paywalls get

获取特定付费墙的详细信息。

adapty paywalls get --app <app-id> <paywall-id>
参数描述
paywall-id付费墙 ID(UUID)
标志是否必填描述
--app是应用 ID(UUID)

adapty paywalls create

创建新付费墙。

adapty paywalls create --app <app-id> --title "Default Paywall" --product-id <product-id>
标志是否必填描述
--app是应用 ID(UUID)
--title是付费墙标题
--product-id是产品 ID(UUID)。重复使用以支持多个产品:--product-id <id1> --product-id <id2>

adapty paywalls update

替换现有付费墙的所有字段。

Important

付费墙一旦与版位关联,其产品便无法更改。如需在已上线的付费墙中使用不同的产品,请创建新的付费墙并更新版位指向该付费墙。

adapty paywalls update --app <app-id> <paywall-id> --title "Default Paywall" --product-id <product-id>

该命令会替换付费墙的所有字段,包括完整的产品列表。

参数说明
paywall-id付费墙 ID(UUID)
标志是否必填描述
--app是应用 ID(UUID)
--title是付费墙标题
--product-id是产品 ID(UUID)。多个产品时重复使用:--product-id <id1> --product-id <id2>

adapty paywalls placements

列出当前使用指定付费墙的所有版位。

adapty paywalls placements --app <app-id> <paywall-id>
参数描述
paywall-id付费墙 ID(UUID)
标志必填描述
--app是应用 ID(UUID)

在替换付费墙之前使用此命令,可以查看哪些版位会受到影响。

此列表中的条目不包含 is_active 字段。如需读取版位的激活状态,请使用 placements list 或 placements get。

流程

Flows 是您在 Flow & Paywall Builder 中构建的付费墙和用户引导。CLI 负责管理流程记录、其编辑工具配置以及发布操作。编辑工具配置是一个大型 JSON 文档,通常由 Flow & Paywall Builder 生成,CLI 本身不会生成该配置。如需从终端创建或编辑配置,请使用 flow-generator skill,它会为您驱动这些命令。在发布之前,flow-audit skill 会检查流程是否已准备好投入生产。以下命令仅作为参考列出。

adapty flows list

列出应用的所有流程。

adapty flows list --app <app-id>
标志是否必填描述
--app是应用 ID(UUID)

支持分页标志。

adapty flows get

获取特定流程的详细信息。

adapty flows get --app <app-id> <flow-id>
参数描述
flow-id流程 ID(UUID)
标志是否必填描述
--app是应用 ID(UUID)

响应包含 id、name、status 和 updated_at。状态值为以下之一:

状态含义
draft该流程从未发布过
published当前版本已上线
dirty该流程曾经发布过,但当前版本有未发布的更改。用户仍会看到最后发布的版本
publishing发布正在进行中
publication_failed上次发布失败。请修复配置后重新发布
archived该流程已归档

adapty flows create

创建一个流程。新流程只有名称,不包含配置。如需添加配置,请使用 flows config update。

adapty flows create --app <app-id> --name "Onboarding"
标志必填描述
--app是App ID(UUID)
--name是流程名称

adapty flows update

重命名一个流程。

adapty flows update --app <app-id> <flow-id> --name "Onboarding v2"
参数描述
flow-id流程 ID(UUID)
标志是否必填描述
--app是应用 ID(UUID)
--name是新流程名称

adapty flows publish

将流程的当前版本发布给用户。

adapty flows publish --app <app-id> <flow-id>
参数描述
flow-id流程 ID(UUID)
标志必填描述
--app是应用 ID(UUID)
--yes、-y否发布时跳过确认提示。当输出被管道传输或使用 --json 时必填

由于发布操作会影响用户所见的内容,该命令会打印流程名称并要求确认。输入 y 以外的任何内容都会取消命令并以退出码 1 结束。在 --json 模式下或通过管道调用时,命令会拒绝执行并以退出码 2 结束,而不是等待用户输入,因此在脚本和自动化会话中请传入 --yes。

发布操作是异步的:响应会返回 status: publishing,此时流程尚未上线。请轮询 flows get,直到状态变为 published 或 publication_failed。若状态为 publication_failed,可通过 flows config get 查看失败原因。

当流程没有配置、配置不可发布或当前版本已上线时,发布操作会返回 HTTP 400 错误。如需在发布前验证配置,请使用 flows config validate。

adapty flows config get

读取流程的编辑器配置。

adapty flows config get --app <app-id> <flow-id>
参数描述
flow-id流程 ID(UUID)
标志是否必填描述
--app是应用 ID(UUID)

响应包含 config、remote_configs、status 和 updated_at。updated_at 是最后一次配置变更的毫秒级时间戳。将其作为 --expected-updated-at 传入 flows config update,以避免覆盖并发编辑。若某个流程的配置从未写入,则返回 404。

发布尝试后,响应还会携带三个字段,描述发布结果。当 flows get 报告 publication_failed 时,请读取这些字段:

字段描述
publication_status该流程版本的发布进度:transforming、transformed、uploading、uploaded、published 或 failed
transform_error原始转换失败信息——可能是列出问题的 JSON 数据,也可能是摘要字符串
publication_error发布失败时的可读错误信息

adapty flows config update

写入流程的编辑器配置。

adapty flows config update --app <app-id> <flow-id> --config-file config.json
ArgumentDescription
flow-id流程 ID(UUID)
标志是否必填描述
--app是App ID(UUID)
--config二选一以 JSON 字符串形式提供的编辑工具配置
--config-file二选一包含编辑工具配置的 JSON 文件路径,或 - 表示从 stdin 读取
--remote-configs否{locale, data} 条目组成的 JSON 数组,其中 data 为字符串形式的远程配置
--expected-updated-at否来自此前 flows config get 的 updated_at 值。若在该次读取之后配置已发生变更,命令将报错而非直接覆盖。省略此标志则无条件覆盖

写入配置会保存草稿,不会直接发布。对于已发布的流程,写入操作会创建新版本:流程状态变为 dirty,用户将继续看到已发布的版本,直到你运行 flows publish。

adapty flows config validate

检查构建器配置是否可发布,而不保存它。

adapty flows config validate --app <app-id> <flow-id> --config-file config.json
参数描述
flow-id流程 ID(UUID)
标志是否必填描述
--app是应用 ID(UUID)
--config二选一构建器配置,以 JSON 字符串形式提供
--config-file二选一包含构建器配置的 JSON 文件路径,或使用 - 从标准输入读取

响应包含 valid 字段和一个 issues 列表。当配置不可发布时,命令会以退出码 1 退出,因此脚本可以以此作为判断条件。

adapty flows config preview

在浏览器中渲染本地配置文件。此命令不调用 API,也不接受 --app 标志。

adapty flows config preview ./config.json --screen <screen-id> --device iphone-14 --orientation portrait
参数描述
config-file本地构建器配置 JSON 文件的路径
标志默认值描述
--screen流程的第一个屏幕要渲染的屏幕 ID
--deviceiphone-14渲染所用的设备框架
--orientationportraitportrait 或 landscape

在终端中,该命令会直接在浏览器中打开预览。若通过管道传输或使用 --json 参数,则会打印 URL。该 URL 包含完整配置,通常较长:建议将其通过管道传入截图工具,而不是直接打印输出。配置超过约 32 KB 时,渲染速度会变慢。

adapty flows media upload

上传图片以在流程配置中使用。

adapty flows media upload --app <app-id> ./hero.png
参数描述
file图片文件路径
标志是否必填描述
--app是应用 ID(UUID)

支持的格式:GIF、HEIC、JPEG、PNG、SVG 和 WebP。响应包含图片的 id、name 以及用于在配置中引用的 CDN url。

版位

版位是您的流程、付费墙和用户引导触达用户的入口。版位的内容类型在创建时即已固定,因此若要将应用从付费墙迁移至流程,需要创建新版位而非更新现有版位——migrate-placements 技能通过这些命令来批量完成该操作。

adapty placements list

列出某个应用的所有版位。

adapty placements list --app <app-id>
参数是否必填说明
--app是应用 ID(UUID)

支持分页参数。

每条记录包含 id、developer_id、title 和 is_active。is_active 为 true 表示该版位已上线,为 false 表示未激活。

adapty placements get

获取特定版位的详细信息。

adapty placements get --app <app-id> <placement-id>
参数描述
placement-id版位 ID(UUID)
标志是否必填描述
--app是应用 ID(UUID)

响应包含 id、developer_id、title、is_active 以及一个 audiences 数组。is_active 为 true 表示版位已上线,为 false 表示版位未激活。每个目标受众条目包含 content_type、segment_ids、priority,以及其内容的 ID:付费墙对应 paywall_id,流程对应 flow_id,运行 A/B 测试 的目标受众对应 ab_test_id 和 ab_test_title。默认目标受众的 segment_ids: [],且优先级值最高(最后被评估)。详见 Audiences shape。

adapty placements create

创建新的版位。

adapty placements create --app <app-id> --title "Main" --developer-id "main" --audiences '[{"content_type":"paywall","segment_ids":[],"paywall_id":"<paywall-id>","priority":0}]'
参数是否必填说明
--app是App ID(UUID)
--title是版位标题
--developer-id是在应用代码中用于请求该版位的字符串标识符
--audiences二选一目标受众条目的 JSON 数组,每条需包含显式 content_type。详见目标受众格式
--paywall-id二选一已弃用。付费墙 ID(UUID)。客户端侧会将其包装为单个默认目标受众

--audiences 和 --paywall-id 必须二选一传入。两者同时传入或都不传入均会报错。

Warning

--paywall-id 已弃用,将在未来版本中移除。传入该参数时,CLI 会在 stderr 打印警告,并将该值转换为默认目标受众。新的自动化流程请使用 --audiences。

adapty placements update

替换现有版位的所有字段。

adapty placements update --app <app-id> <placement-id> --title "Main" --developer-id "main" --audiences '[{"content_type":"paywall","segment_ids":[],"paywall_id":"<paywall-id>","priority":0}]'

此命令会替换版位的所有字段,包括完整的目标受众列表。

参数说明
placement-id版位 ID(UUID)
参数是否必填描述
--app是应用 ID(UUID)
--title是版位标题
--developer-id是在应用代码中用于请求此版位的字符串标识符
--audiences二选一目标受众条目的 JSON 数组,每个条目均带有显式的 content_type。详见目标受众结构
--paywall-id二选一已废弃。付费墙 ID(UUID)。将所有目标受众替换为单个默认目标受众
Warning

传入 --paywall-id 会覆盖版位上的所有目标受众,特定市场细分的目标受众将被删除。若要保留它们,请使用 --audiences 并将所有需要保留的条目一并传入。

目标受众结构

--audiences 标志接受一个 JSON 数组,每个条目包含:

字段类型描述
content_typestring每条记录必填。"paywall"、"flow"、"ab_test"(付费墙 A/B 测试)、"flow_ab_test"(流程 A/B 测试)、"cross_ab_test" 或 "flow_cross_ab_test"(跨版位 A/B 测试)。付费墙版位中使用 paywall、ab_test 和 cross_ab_test,流程版位中使用 flow、flow_ab_test 和 flow_cross_ab_test
segment_idsstring[]此目标受众所针对的市场细分 ID。长度为 0 或 1。空数组表示默认受众——适用于不匹配任何其他市场细分的用户的兜底选项
paywall_idstring向此目标受众中的用户展示的付费墙 ID(UUID)。当 content_type 为 "paywall" 时必填
flow_idstring向此目标受众中的用户展示的流程 ID(UUID)。当 content_type 为 "flow" 时必填
ab_test_idstring针对此目标受众中的用户运行的 A/B 测试 ID。四种 A/B 测试内容类型均必填
ab_test_titlestringA/B 测试标题。只读:写入时 API 会忽略此字段
prioritynumber从 0 开始,在版位内唯一。目标受众按从低到高的顺序评估;默认受众必须具有最高值

一个版位必须恰好拥有一个默认目标受众。

Warning

placements update 会替换完整的目标受众列表,包括正在运行 A/B 测试的目标受众。要保留正在运行的测试,请从 placements get 中复制对应条目到 --audiences,保持 ab_test_id 和 segment_ids 不变。如果写入时移除或替换了该条目,测试将在没有获胜者的情况下停止。如果写入时将该条目移动到其他市场细分,测试将重新开始;如果将 ab_test_id 指定给另一个目标受众,测试将在那里启动。仅更改优先级的写入不会影响测试的运行。CLI 不会对上述情况发出警告。

跨版位 A/B 测试条目(cross_ab_test、flow_cross_ab_test)为只读字段。API 在写入时会忽略这些条目,并保留已存储的值。

版位的内容类型在创建时即已固定,因此 placements update 无法将付费墙版位切换为流程版位,反之亦然。请为流程单独创建一个版位——详见为流程创建新版位。

CLI 在发送请求前会对每条条目进行校验。如果某条条目缺少 content_type 或 content_type 未知,或者缺少其 content_type 所需的 ID,CLI 将以代码 2 退出,且不会发送任何请求。对于 CLI 无法识别的 content_type,CLI 会输出 this CLI does not know this audience kind; update the CLI。如果该条目来自 placements get,请更新 CLI 而不是删除该条目:该条目可能正在运行 A/B 测试。

流程只有在发布后才能被关联。处于 draft 状态的流程,或首次发布仍在进行中的流程,会被服务器拒绝;CLI 识别到该拒绝后将以代码 2 退出,并打印该流程对应的 flows publish 命令。要发布流程,请使用 flows publish 或 流程与付费墙编辑工具,然后等待其状态变为 published。

以下是包含一个目标受众和一个默认受众的示例:

adapty placements update <placement-id> --app <app-id> --title "Main" --developer-id "main" \
  --audiences '[{"content_type":"paywall","segment_ids":["<vip-segment-id>"],"paywall_id":"<vip-paywall-id>","priority":0},{"content_type":"paywall","segment_ids":[],"paywall_id":"<default-paywall-id>","priority":1}]'

向所有用户提供已发布流程的版位示例:

adapty placements create --app <app-id> --title "Onboarding" --developer-id "onboarding" \
  --audiences '[{"content_type":"flow","segment_ids":[],"flow_id":"<flow-id>","priority":0}]'

要在多个版位之间替换付费墙而不丢失市场细分路由规则,请执行以下步骤:

  1. 查找受影响的版位:

    adapty paywalls placements --app <app-id> <old-paywall-id>
  2. 对每个版位读取完整的 audiences 数组:

    adapty placements get --app <app-id> <placement-id> --json
  3. 在客户端替换匹配的 paywall_id 值。保持其他所有条目不变,包括 A/B 测试条目。

  4. 将修改后的数据写回:

    adapty placements update --app <app-id> <placement-id> --title "<title>" --developer-id "<developer-id>" --audiences '<modified-payload>'

市场细分

市场细分根据用户画像属性对用户进行分组。使用以下命令创建市场细分,并在构建版位目标受众时查找市场细分 ID。若要基于 Apple Ads 广告系列、广告组或关键词创建市场细分,请改用 adapty asa segments create:它会自动查找 Apple ID,并按照 Ads Manager 的命名方式为市场细分命名。

adapty 市场细分列表

列出某个应用的所有市场细分。

adapty segments list --app <app-id>
标志是否必填描述
--app是应用 ID(UUID)

支持分页标志。

adapty segments get

获取特定市场细分的详细信息。

adapty segments get --app <app-id> <segment-id>
参数描述
segment-id市场细分 ID(UUID)
标志必填描述
--app是应用 ID(UUID)

响应包含 id、title、description、filters、profile_count、refresh_in_progress、created_at 和 updated_at。list 仅返回 id、title 和 description。

adapty segments create

从一个或多个筛选条件创建市场细分。

adapty segments create --app <app-id> --title "US installs" --filter ip_country:IN:US --filter install_date:>=:2026-01-01
标志是否必填说明
--app是App ID(UUID)
--title是市场细分名称
--filter是筛选规则,可重复使用。详见筛选条件语法
--description否市场细分描述

用户只有在满足所有筛选条件时,才会匹配该市场细分。响应字段与 segments get 相同。profile_count 初始值为 0,市场细分创建完成后,Adapty 会重新计算该值。

adapty segments update

替换现有市场细分的标题、描述和筛选条件。

adapty segments update --app <app-id> <segment-id> --title "US installs" --filter ip_country:IN:US,CA
参数描述
segment-id市场细分 ID(UUID)
标志是否必填描述
--app是应用 ID(UUID)
--title是市场细分标题
--filter是筛选规则。可重复使用。参见筛选语法
--description否市场细分描述
Warning

segments update 会替换整个市场细分。请传入所有要保留的筛选条件,而不仅仅是你要修改的那一个。若要查看当前筛选条件,请运行 adapty segments get --app <app-id> <segment-id> --json。

筛选条件语法

每个 --filter 的格式为 field:OPERATOR:value。若要匹配多个值中的任意一个,请用逗号分隔:ip_country:IN:US,CA。

操作符值示例
IN, NOT IN一个或多个ip_country:NOT IN:US,CA
>, >=, <, <=一个age:>:18
BETWEEN两个total_revenue_usd:BETWEEN:10,100
IS NULL, IS NOT NULL无age:IS NULL

数字请直接以原始值传入,例如 age:>:18。Adapty 会对 age、total_revenue_usd 以及 float 类型的自定义属性进行数值转换。

对于无法用简写形式表达的值,请将过滤条件以 JSON 对象的形式传入:

adapty segments create --app <app-id> --title "Adults" --filter '{"field_name":"age","operator":">","value_list":[18]}'

Adapty 会验证字段名、运算符和值类型,并对每个无效过滤器报告一条错误。如需查看现有过滤器的字段名和值格式,可对看板中创建的市场细分运行 adapty segments get --app <app-id> <segment-id> --json。

迁移

将 RevenueCat 项目迁移到 Adapty:先迁移产品目录,再按需迁移商店事件和交易历史。Adapty 会将每次迁移作为一系列步骤执行,并告知你下一步可执行的操作,因此在每次操作前请先查看 status。完整流程请参阅从 RevenueCat 迁移。

除 list、create、use、current 和 unuse 之外,所有命令均支持迁移标志:

标志是否必填描述
-m, --migration否迁移 ID。若未指定,CLI 将依次使用 ADAPTY_MIGRATION 环境变量,然后使用由 create 或 use 命令保存的迁移。

adapty migrations list

列出您的迁移记录及可启动的迁移流程,按应用分组显示。

adapty migrations list

adapty migrations create

启动一次迁移并将其保存为当前迁移。

adapty migrations create --name <app-name>
adapty migrations create --flow <flow> --app <app-id>
参数是否必填说明
--name--name 或 --flow 二选一新 Adapty 应用的名称。启动目录迁移。不能与 --flow 或 --app 同时使用。
--flow--name 或 --flow 二选一在已有应用中启动的流程,格式与 adapty migrations list 显示的一致。需配合 --app 使用。
--app与 --flow 配合使用应用 ID(UUID)
--no-select否创建迁移时不将其保存为当前迁移

现有应用完成目录迁移后可用的流程:

流程描述
transactions通过每日 RevenueCat 云导出功能导入历史交易记录
transactions_support通过 RevenueCat 支持团队和 Adapty 支持团队导入历史交易记录,适用于没有云导出功能的 RevenueCat 方案
apple_events将 App Store 通知转发给 Adapty,同时 RevenueCat 继续接收这些通知
google_events将 Adapty 订阅到 RevenueCat 用于 Google Play 通知的 Pub/Sub 主题
code让你的编程代理在应用的某个代码库中替换 RevenueCat SDK
integrations让你的编程代理在应用代码中找出需要在 Adapty 中配置的分析、归因和消息推送工具
paywall_design让你的编程代理在目录迁移创建的流程中重建 RevenueCat 付费墙设计

adapty migrations use

将某个迁移设置为当前迁移,这样其他命令就不需要再加 -m 参数了。

adapty migrations use <migration-id>
参数描述
migration-id从 adapty migrations list 获取的迁移 ID

CLI 在保存 ID 前会先验证你是否有权限访问该迁移。保存后的迁移绑定当前 token,并在所有终端中生效。

adapty migrations current

显示当前迁移及其来源:ADAPTY_MIGRATION 环境变量或已保存的选择。

adapty migrations current

adapty migrations unuse

清除已保存的迁移记录。在 shell 中设置的 ADAPTY_MIGRATION 值会一直生效,直到你取消设置为止。

adapty migrations unuse

adapty migrations status

显示迁移的状态、存在的问题以及可执行的后续操作。

adapty migrations status
标志是否必填说明
--wait否轮询直到迁移状态发生变化,然后返回最新状态
--timeout否--wait 的轮询时长:1–600 秒,默认 120 秒。接受 300、300s 或 5m。需配合 --wait 使用。

使用 --json 时,next_actions 和 available_actions 会列出每个操作的 ID、所读取的资源、input_schema 以及 confirm 文本。

退出码 0 表示请求成功,并不代表迁移本身成功。请检查响应中的 migration.state。

adapty migrations steps

显示迁移清单及每个步骤的状态。

adapty migrations steps

adapty migrations show

列出当前可读取的资源,或读取某个特定资源。

adapty migrations show [resource]
参数描述
resource资源名称,例如 apps、mapping、report 或 export-config。省略此参数可列出当前步骤中可用的资源。

adapty migrations run

运行 adapty migrations status 中的某个操作。

adapty migrations run <action-id>
参数描述
action-id来自 adapty migrations status 中 next_actions 或 available_actions 的操作 ID
参数是否必填描述
--input否以 JSON 对象形式传入的操作输入,需符合该操作的 input_schema。若不提供输入,CLI 将发送 {}。
--input-file否操作输入文件的路径,或使用 - 从标准输入读取。不能与 --input 同时使用。
-y, --yes操作包含 confirm 文本时必填阅读操作的 confirm 文本后确认执行。无交互式提示。
--open否即使在管道模式或使用 --json 时,也打开操作的链接
--no-browser否打印操作的链接,但不打开浏览器

Actions 分为三种类型:

  • 输入操作将您的数据发送至 Adapty,例如要迁移的 RevenueCat 应用或您的映射决策。
  • 外部操作在 Adapty 看板中打开一个页面,例如粘贴 RevenueCat 密钥 API key。完成页面操作后,检查 status。
  • Agent 操作(例如 migrate_code)是交给您的编程 Agent 执行的任务。请从应用的 Git 仓库中运行这些操作:CLI 会将迁移数据保存在 .git/adapty/<migration-id>/ 目录下,并向 Agent 打印相关说明。Agent 通过再次运行该操作并附带 --input 参数来报告结果。

adapty migrations close

完成或取消迁移。操作后无法重新打开。

adapty migrations close --outcome finish --yes
FlagRequiredDescription
--outcomeYesfinish 将迁移标记为已完成;cancel 放弃迁移
-y, --yesYes确认关闭操作

技能

adapty skills install

将 Adapty 技能安装到本机的编程智能体中。

adapty skills install
FlagRequiredDescription
--agentNoAgent to install into: claude-code, codex, or gemini-cli. Repeat the flag for several agents.
-y, --yesNoInstall into every agent found without asking. Required when the CLI finds several agents and can’t ask, for example with --json.

The CLI looks for Claude Code, Codex, and Gemini CLI on PATH. If it finds none, it asks whether to run npx skills@1.7.0 add adaptyteam/adapty-skills --all --global, which covers other agents. Restart the agent to load the skills.

认证

命令描述
adapty auth login通过浏览器使用设备流程进行身份验证
adapty auth logout清除本地存储的凭据及已保存的迁移记录
adapty auth whoami通过服务器验证令牌并显示用户信息
adapty auth status在不请求服务器的情况下显示本地认证状态
adapty auth revoke在服务器端撤销令牌,并清除本地令牌及已保存的迁移记录

各命令的详细说明请参阅认证。