目录

Xcode 配置 StoreKit 配置文件:本地模拟支付与订阅测试全指南

Xcode 配置 StoreKit 配置文件:本地模拟支付与订阅测试全指南

在 App 开发过程中,使用 StoreKit 配置文件(.storekit)可以实现本地支付流程的模拟测试,无需联网或沙盒账号。本文将详细介绍配置步骤、测试流程及相关代码示例,助你高效完成 In-App Purchase(IAP)开发调试。


一、为什么要用 StoreKit 配置文件?

StoreKit 配置文件就像一间“虚拟商店”,让开发者可以在本地环境下,模拟各种支付和订阅场景,快速迭代和调试,避免频繁切换沙盒账号或等待 App Store 审核。


二、配置步骤

1. 创建 StoreKit 配置文件

  1. 新建文件:在 Xcode 项目导航区(左侧 Project Navigator)右键项目文件夹,选择 New File...
  2. 搜索“StoreKit”,选择 “StoreKit Configuration File”,点击 Next
  3. 命名(如:Test.storekit),点击 Create

2. 在 .storekit 中添加商品

  • 打开 .storekit 文件,点击左下角 “+” 按钮,选择商品类型(消耗型、非消耗型、订阅等)
  • 配置商品 ID、价格、订阅周期等参数

3. 关联 StoreKit 文件到 Scheme

  1. 菜单:Product > Scheme > Edit Scheme...
  2. 左侧选择 Run > Options
  3. 右侧 StoreKit Configuration 选择刚创建的 .storekit 文件
  4. Close 保存

4. 运行并测试

  • 运行 App,Xcode 会自动使用 StoreKit 配置文件模拟支付流程
  • 可在模拟器或真机上测试,无需联网、无需沙盒账号

三、Swift 代码示例(StoreKit 2)

import StoreKit

@MainActor
class StoreKitManager: ObservableObject {
    @Published var products: [Product] = []

    // 加载商品
    func fetchProducts() async {
        do {
            let storeProducts = try await Product.products(for: ["com.example.test.coin100", "com.example.test.vip"])
            self.products = storeProducts
        } catch {
            print("获取商品失败: \(error)")
        }
    }

    // 购买商品
    func purchase(product: Product) async {
        do {
            let result = try await product.purchase()
            switch result {
            case .success(let verification):
                switch verification {
                case .verified(let transaction):
                    print("购买成功: \(transaction.productID)")
                    await transaction.finish()
                case .unverified(_, let error):
                    print("购买未验证: \(error)")
                }
            case .userCancelled:
                print("用户取消购买")
            case .pending:
                print("购买待处理")
            @unknown default:
                break
            }
        } catch {
            print("购买过程出错: \(error)")
        }
    }
}

四、常见测试场景

  • 购买消耗品、非消耗品
  • 订阅购买与续期
  • 购买恢复
  • 购买失败、取消、退款
  • 订阅升级/降级/跨级

五、注意事项

  • .storekit 仅在本地生效,不影响线上或沙盒
  • 可随时修改商品参数,实时生效
  • 复杂场景(如时间加速、订阅升级)可在 .storekit 中配置

六、参考链接

  • Apple:Testing at all stages of development with Xcode and the sandbox
  • Apple:StoreKit testing in Xcode