Xcode 配置 StoreKit 配置文件:本地模拟支付与订阅测试全指南
目录
Xcode 配置 StoreKit 配置文件:本地模拟支付与订阅测试全指南
在 App 开发过程中,使用 StoreKit 配置文件(.storekit
)可以实现本地支付流程的模拟测试,无需联网或沙盒账号。本文将详细介绍配置步骤、测试流程及相关代码示例,助你高效完成 In-App Purchase(IAP)开发调试。
一、为什么要用 StoreKit 配置文件?
StoreKit 配置文件就像一间“虚拟商店”,让开发者可以在本地环境下,模拟各种支付和订阅场景,快速迭代和调试,避免频繁切换沙盒账号或等待 App Store 审核。
二、配置步骤
1. 创建 StoreKit 配置文件
- 新建文件:在 Xcode 项目导航区(左侧 Project Navigator)右键项目文件夹,选择
New File...
- 搜索“StoreKit”,选择 “StoreKit Configuration File”,点击
Next
- 命名(如:
Test.storekit
),点击Create
2. 在 .storekit 中添加商品
- 打开
.storekit
文件,点击左下角 “+” 按钮,选择商品类型(消耗型、非消耗型、订阅等) - 配置商品 ID、价格、订阅周期等参数
3. 关联 StoreKit 文件到 Scheme
- 菜单:
Product
>Scheme
>Edit Scheme...
- 左侧选择
Run
>Options
- 右侧
StoreKit Configuration
选择刚创建的.storekit
文件 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