StoreKit 2 是苹果公司于 2021 年推出的一个全新的框架,旨在简化 iOS 应用中的应用内购买和订阅功能。它利用 Swift 的最新特性,提供了更简洁、更安全的交易处理方式。以下是 StoreKit 2 的主要特点和优势,以及一些实用案例。
主要特点
-
基于 Swift 的 API
StoreKit 2 使用 Swift 的异步并发特性,使得代码更简洁易读。例如,使用
async/await
语法可以轻松处理内购请求和处理,减少因同步操作导致的界面卡顿问题swift// 获取商品信息 let products = try await Product.products(for: productIDs)
-
简化交易处理
StoreKit 2 使用 JSON Web Signature (JWS) 加密签名交易,提高安全性并简化交易信息解析。这种方式允许客户端直接验证交易,无需服务器介入
swift// 验证交易 let verification = try await product.purchase() let transaction = try checkVerified(verification)
-
自动同步交易
应用可以自动同步用户在不同设备上的购买记录,无需服务器端验证。这确保了用户在任何设备上都能访问已购买的内容
-
内嵌订阅管理
提供 API 允许用户在应用内管理订阅,无需跳转到系统设置。这种方式提高了用户体验,方便用户随时查看和修改订阅状态
-
支持退款请求
允许用户在应用内发起退款请求,简化了用户的操作流程
优势
- 简化代码:使用异步并发特性减少闭包嵌套,提高代码可读性
- 提高安全性:通过 JWS 加密签名确保交易安全
- 增强用户体验:提供内嵌式订阅管理和退款请求功能,提高用户便利性
应用场景
StoreKit 2 适用于需要在 iOS 应用中实现应用内购买和订阅功能的开发者,尤其是那些需要简化交易流程和提高安全性的应用。它支持 iOS 15 及以上版本
示例代码
以下是一个完整的购买流程示例:
swift
import StoreKit
// 获取商品信息
func fetchProducts() async throws -> [Product] {
let productIDs = ["com.example.product1", "com.example.product2"]
let products = try await Product.products(for: productIDs)
return products
}
// 购买商品
func purchase(_ product: Product) async throws -> Transaction? {
let result = try await product.purchase()
switch result {
case .success(let verification):
let transaction = try checkVerified(verification)
await transaction.finish()
return transaction
case .userCancelled, .pending:
return nil
default:
return nil
}
}
// 验证交易
func checkVerified(_ verification: VerificationResult) throws -> Transaction {
// 实现验证逻