LESSON 37 / 575 分钟
StoreKit、购买与订阅
购买是一条需要恢复、验证和持续更新权益的业务流程。
用你的前端经验理解
可以借用订单与权限系统的经验,但苹果平台的数字内容购买、交易验证和分发规则需要单独理解。
01 / 理解问题
为什么需要它
购买不是按钮点击后把 isPro 设为 true,而是从产品展示、用户确认、交易验证到权益恢复的一整条流程。StoreKit 负责与 App Store 交易体系交互,应用负责把可信交易映射成具体能力。购买状态、业务登录状态和 iCloud 状态相互独立,不能因为账号登录成功就推断已购买。
它是怎样工作的
产品 ID 是配置身份,价格与货币显示应使用商店返回的本地化信息。购买可能成功、取消、待处理或失败;成功结果仍需要按验证结果处理。权益要在应用启动和交易更新时重新计算,不能只依赖本次购买回调。可恢复商品应有恢复路径,消耗型商品则需要独立的发放与消耗账本。
02 / 掌握要点
把关键概念连起来
1
产品
在 App Store Connect 配置产品,用 StoreKit 获取商品信息并发起购买;处理用户取消、待处理与失败。
2
权益
根据已验证的交易更新权限,监听交易变化,提供合适的恢复购买体验;不要只信一个本地 Bool。
3
规则
数字内容、实体商品、地区和分发渠道会影响支付规则,发布前核对当前 App Review Guidelines。
03 / 案例推演
为阅读 App 解锁高级主题
- 加载产品并显示实际商店价格;加载失败时保留基础阅读能力,不猜一个缓存外的价格继续收费。
- 用户确认购买后只在交易可信且商品匹配时解锁;取消回到原页面,待处理明确提示等待。
- 重启和换设备后重新读取可用权益,验证已购用户不必重复付费。
这里需要你亲自判断
一次购买按钮返回不代表你已经正确处理退款、跨设备恢复和订阅过期。
04 / 动手验证
做一个小练习
列出购买成功、取消、待批准、过期、退款后各自应显示的权益状态。
- 在内购实验室比较取消、待处理、验证失败和已授权四种结果。
- 说明高级主题与一次性 AI 生成次数为什么需要不同的权益模型。
展开参考思路与验收标准
非消耗型解锁可以从有效交易恢复;消耗型次数还需维护发放和使用记录。客户端布尔值只是界面缓存,不能成为跨设备或服务端计费功能的唯一依据。
05 / 检查理解
付费权益应以什么为依据?
答对理解题后即可标记完成