SuperAPI AI 工具集

integrate-revenuecat

编程与开发

查看项目

更新于 10-15 12:57

技能介绍

integrate-revenuecat 是一个端到端接入 RevenueCat 的技能,适用于用户首次向项目添加 RevenueCat,或需要使用公开 API Key 重新配置 SDK 的场景。技能分为两大部分:仪表盘侧(通过 RevenueCat MCP 服务器或 rc CLI 设置项目、注册应用并获取公开 API Key)和应用侧(安装 Purchases SDK、在应用入口调用 Purchases.configure(…),并验证日志中的配置横幅)。

使用方式:技能按顺序引导完成两半工作。大多数接入都需要两半,即使用户只要求“安装 SDK”,因为 SDK 需要来自仪表盘的 API Key。如果项目和应用已存在、用户只想把 SDK 接入代码,可跳到第 3 节。如果用户想从零引导一个全新的 RevenueCat 项目(应用、产品、权益、优惠),应改用 create-revenuecat-project 技能,然后再回到本技能安装 SDK。

参数:作为斜杠命令调用时可通过 $ARGUMENTS 使用。platform(可选):ios、android、kmp、flutter、react-native 之一,省略时运行第 3a 节的检测算法。app_identifier(可选):Bundle ID(iOS)或包名(Android),省略时从项目文件(Info.plist、AndroidManifest.xml、app.json、pubspec.yaml)读取。project_name(可选):要使用的 RevenueCat 项目名称,省略时列出项目并询问用户。

第 1 节了解现状:在接触仪表盘前收集事实,包括平台目标(iOS/Apple App Store、Android/Google Play 或两者)、技术栈(原生 iOS Swift、原生 Android Kotlin/Java、React Native、Flutter、Kotlin Multiplatform)、应用标识符(Bundle ID 或包名),并尽量从项目文件读取而非询问。

第 2 节仪表盘侧:使用用户可用的 RevenueCat MCP 服务器或 rc CLI。2a 获取或创建项目:列出可访问项目(list-projects 或 rc projects list),如有多个则询问用户或提供创建新项目(create-project / rc projects create);如无项目则转交 create-revenuecat-project 技能;保存 project_id。2b 获取或创建应用:检查项目中已配置的应用(list-apps / rc apps list),test_store 应用始终存在,app_store 和 play_store 仅在用户完成商店侧设置后存在;询问用户是否已在 App Store Connect 或 Google Play Console 中设置应用,并说明商店侧设置可以稍后完成,test_store 足以开始接入;如用户确认商店侧已完成,调用 create-app(或 rc apps create),iOS 使用 type: "app_store" 和 bundle_id,Android 使用 type: "play_store" 和 package_name,name 从标识符派生或询问用户。2c 获取公开 API Key:列出相关应用 ID 的公开密钥(list-public-api-keys 或 rc apps keys <app-id>),优先 app_store / play_store,否则 test_store;返回的密钥是公开的,可安全嵌入客户端应用代码,iOS 密钥前缀 appl_…,Android 为 goog_…,Amazon 为 amzn_…;绝不要在客户端代码中使用 secret API Key,secret 密钥仅限服务器端。

第 3 节应用侧安装和配置 SDK:3a 检测平台,检查工作目录并按从上到下的顺序选择第一个匹配项:React Native(package.json 有 react-native-purchases 条目或 react-native 依赖,读取 platforms/react-native.md,如同时有 expo 依赖则标记为 Expo 项目);Flutter(项目根目录存在 pubspec.yaml,读取 platforms/flutter.md);Kotlin Multiplatform(build.gradle.kts 包含 kotlin { … } 多平台源集块,或依赖 com.revenuecat.purchases:purchases-kmp*,读取 platforms/kmp.md);Android 原生(build.gradle(.kts) 应用 com.android.application 且非 KMP,读取 platforms/android.md);iOS 原生(项目根目录有 Package.swift、.xcodeproj、.xcworkspace 或 Podfile,读取 platforms/ios.md)。如多个匹配(例如 Flutter 项目内的 ios/ 文件夹),选择拥有构建的最外层项目;仍不明确则询问用户。3b 所有平台共享概念:使用公开 SDK Key 而非 secret 密钥,RevenueCat 为每个商店/平台颁发单独的公开 SDK Key,iOS 使用 appl_…,Android 使用 goog_…,Amazon 使用 amzn_…,服务器端 secret 密钥绝不能出现在客户端应用中;每次应用启动只配置一次,尽早(应用入口点)调用 Purchases.configure(…) 恰好一次,后续调用会 no-op 或警告;默认匿名用户,如不传 appUserID,RevenueCat 会创建稳定的匿名 ID,仅在启动时已有认证用户才传 appUserID,否则稍后调用 logIn(…)(见 revenuecat-identify-user 技能);接入期间启用调试日志,各平台文件说明如何启用,发布构建时关闭;将密钥排除在源代码管理之外,用户询问密钥管理时推荐 .env(RN)、xcconfig(iOS)、local.properties / gradle.properties(Android)或 dart-define(Flutter)。3c 实现:读取与检测匹配的平台文件(platforms/ios.md、platforms/android.md、platforms/kmp.md、platforms/flutter.md、platforms/react-native.md),每个平台文件自包含安装命令、确切的 configure 代码片段以及放置位置。

第 4 节验证:在项目构建成功(Xcode build、./gradlew assembleDebug、flutter run、npx react-native run-ios 或 KMP 等效命令)、应用启动且 RevenueCat SDK 在控制台/logcat/Metro 输出中记录配置横幅、首次 SDK 网络调用无认证错误之前,不要声称设置完成。如果用户只要求“安装”而未运行应用,告知他们运行时应查看的日志内容。

第 5 节后续步骤:5a 产品、权益、优惠,检查项目中是否已设置,如未设置则通过 create-revenuecat-project 技能提供帮助。5b 商店侧设置,iOS(App Store Connect)包括 In-App Purchase Key(推荐用于 StoreKit 2,在 App Store Connect → Users and Access → Integrations → In-App Purchase 生成密钥并下载 .p8 文件,记录 Key ID 和 Issuer ID)和 Shared Secret(旧版 StoreKit 1,在 App Store Connect → App → App Information → App-Specific Shared Secret);Android(Google Play Console)包括服务账号凭据(在 Google Cloud Console 创建服务账号,授予“Service Account User”角色,创建 JSON 密钥,在 Play Console 授予该服务账号“View financial data”权限)和实时开发者通知 RTDN(设置 Cloud Pub/Sub 主题,在 Play Console → Monetization setup 配置);如用户提供这些信息,通过 create-app / update-app 在 RevenueCat 侧注册。5c 选择付费墙构建方式,这是产品决策而非实现细节,应在编写任何付费墙代码前确定。RevenueCat Paywall(推荐默认):由 RevenueCat 托管并由 RevenueCatUI 渲染,用户自行创建,加载 revenuecat-paywall-design 技能并遵循其创建工作流(通过 MCP 的 create-paywall-ai 或 CLI 的 rc paywalls generate,附加到当前优惠并根据应用代码库生成),然后用 revenuecat-paywall 呈现;用户无需在仪表盘中设计任何内容,可稍后在付费墙构建器中完善;设计、文案和套餐无需应用发布即可更改,付费墙变体可通过 RevenueCat Experiments 进行 A/B 测试。代码中的自定义付费墙:应用自己的 UI,套餐和价格来自 getOfferings(),购买由 revenuecat-purchase-flow 处理;完全视觉控制,但每次设计更改都需应用发布,且付费墙设计无法 A/B 测试;价格和优惠测试仍有效,因为套餐来自优惠。选择路径:用户已说明则使用;应用尚无付费墙屏幕则推荐 RevenueCat Paywall;应用已有付费墙或订阅屏幕(列出计划或价格、订阅或升级按钮、硬编码价格或产品 ID)则用户很可能想将该屏幕接入优惠,推荐保留并提及 RevenueCat Paywall 可替换它。如能询问用户,用一个问题给出两个选项,推荐项在前,各附一行权衡;如无法询问(例如非交互运行),不要停止,采用上述推荐,并在总结中说明所走路径及如何切换到另一路径。不要默认仅因保持工作在代码中就手写付费墙屏幕。新的 RevenueCat Paywall 是未发布的草稿:告知用户在付费墙构建器中审查,仅在他们要求时发布,因为在付费墙发布并附加到优惠之前,应用会渲染默认回退布局。5d 后续技能:integrate-revenuecat 之后常见的后续包括 revenuecat-paywall-design(创建或编辑仪表盘付费墙)、revenuecat-paywall(显示仪表盘配置的付费墙)、revenuecat-purchase-flow(为自定义付费墙实现购买和恢复)、revenuecat-entitlements-gate(将功能置于有效权益之后)、revenuecat-identify-user(将 logIn / logOut 接入应用认证系统)、revenuecat-testing-setup(设置沙盒测试通道)、revenuecat-troubleshoot(诊断优惠/产品/权益错误)。

限制:本技能依赖 RevenueCat MCP 服务器或 rc CLI 进行仪表盘操作;商店侧设置(App Store Connect、Google Play Console)需要用户自行完成并提供凭据;付费墙的发布需用户明确要求;具体收费、价格、平台支持范围等资料未提供。