SuperAPI AI 工具集

axiom-in-app-purchases

编程与开发

查看项目

更新于 10-15 14:28

技能介绍

用途

该技能用于指导在 iOS 应用中实现稳健、可测试的内购(In-App Purchase)功能,基于 StoreKit 2。适用场景包括:实现任意内购功能(新增或已有)、添加消耗型产品(金币、提示、加速道具)、添加非消耗型产品(高级功能、关卡包)、添加自动续期订阅(月度/年度计划)、调试购买失败/交易缺失/恢复问题、搭建 StoreKit 测试配置、实现订阅状态跟踪、添加促销优惠或推介优惠、服务端收据校验以及家庭共享支持。

不适用场景:StoreKit 1(旧版 API)、App Store Connect 产品配置(另有文档)、定价策略或商业模式决策。

主要能力

技能围绕 StoreKit 2 提供一套实现规范与代码模式,包括:

  • 测试优先工作流:先创建 .storekit 配置文件,再写生产代码。
  • 集中式 StoreManager 架构:所有购买逻辑经由单一 StoreManager,避免在应用各处散落 Product.purchase() 调用。
  • 交易监听:通过 Transaction.updates 监听所有交易更新。
  • 交易校验:使用 VerificationResult 校验交易签名,区分 verified 与 unverified。
  • 权益授予与交易完成:授予权益后必须调用 transaction.finish()。
  • 购买流程:使用 purchase(confirmIn:options:)(iOS 18.2+)并处理 success、userCancelled、pending 等结果。
  • 当前权益查询:通过 Transaction.currentEntitlements 与 currentEntitlements(for:) 判断用户已购内容。
  • 订阅管理:通过 Product.SubscriptionInfo.Status 跟踪订阅状态,处理 subscribed、expired 等状态。
  • 服务端关联:在需要后端时设置 appAccountToken。

使用方式

技能给出的推荐工作流顺序为:StoreKit Config → 本地测试 → 生产代码 → 单元测试 → 沙盒测试。

第一步:创建 StoreKit 配置(先于任何购买代码)。在 Xcode 中通过 File → New → File → StoreKit Configuration File 创建,例如保存为 Products.storekit,并加入目标。随后添加产品,如消耗型(Product ID: com.yourapp.coins_100,价格 $0.99)、非消耗型(com.yourapp.premium,$4.99)、自动续期订阅(com.yourapp.pro_monthly,$9.99/月,订阅组 ID: pro_tier)。在 Scheme → Edit Scheme → Run → Options 中选择该 StoreKit Configuration 后即可在模拟器验证产品加载、购买完成与交易出现。

第二步:实现 StoreManager 架构。示例使用 @MainActor final class StoreManager: ObservableObject,持有 products 与 purchasedProductIDs,并在 init 中启动交易监听、加载产品与更新已购产品。

第三步:实现购买流程。示例使用 product.purchase(confirmIn: scene) 并 switch 处理 .success、.userCancelled、.pending 与 @unknown default;SwiftUI 中可通过 @Environment(.purchase) 调用。若使用后端,可在 options 中传入 .appAccountToken(accountToken)。

第四步:校验交易(强制)。对 VerificationResult 使用 switch:.verified 时授予权益并 finish;.unverified 时不授予权益,但仍 finish 以清除队列。授予权益前检查 transaction.revocationDate == nil,并按 productType(consumable、nonConsumable、autoRenewable 等)分别处理。

第五步:跟踪当前权益。遍历 Transaction.currentEntitlements,仅纳入未撤销的交易;也可用 currentEntitlements(for:) 判断特定产品。

第六步:订阅管理。通过 Product.SubscriptionInfo.status(for: groupID) 获取状态,并按 state(如 subscribed、expired)更新界面。

适用场景与限制

适用:iOS 15+(最新特性需 iOS 18.4+),Xcode 13+(推荐 Xcode 16+),StoreKit 2。技能包含一份强制检查清单,覆盖测试基础、架构、购买流程、订阅管理、恢复与同步、错误处理、测试与验证等阶段,要求完成 .storekit 配置、验证各产品类型、测试成功/失败/恢复流程、订阅续期与升降级、集中式 StoreManager、交易监听与校验、finish 调用、恢复购买、单元测试与沙盒/TestFlight 测试等。

限制:不覆盖 StoreKit 1、App Store Connect 产品配置与定价策略。若在创建 .storekit 配置前已写购买代码,技能给出三种处理方式:A 删除重来(强烈推荐)、B 现在补建配置(可接受但需谨慎)、C 完全跳过(不推荐)。