了解最新的 storekit api 增强功能,它们有助于你为顾客提供出色的 app 内购买项目体验。我们将介绍 apptransaction、transaction 和 renewalinfo 中新增的字段,以及针对 app 内购买项目优惠代码所做的更新。我们还将介绍如何使用 app store server library 创建已签名的 app 内购买项目请求,以及如何使用 swiftui 来更新陈列订阅项。
此文章由AI生成,可能存在错误,如有问题,请联系djs66256@163.com
StoreKit 与应用内购买新特性解析
苹果在最新的 WWDC 上公布了多项 StoreKit 与应用内购买的更新,这些改进将帮助开发者更好地管理应用内购买体验。本文将详细介绍这些新功能及其实现方式。
核心框架更新
StoreKit 框架中的三个关键类型获得了重要升级,为开发者提供了更丰富的购买信息和管理能力。
AppTransaction 增强
AppTransaction 类型现在包含两个新字段:
appTransactionID
: 这是一个全局唯一标识符,从 iOS 18.4 开始可用(支持回溯至 iOS 15),每个下载应用的 Apple ID 账户都会获得独立 IDoriginalPlatform
: 表示用户原始购买设备的平台类型(AppStore.Platform),包括 iOS、macOS、tvOS 和 visionOS
这些字段特别适用于商业模式变更的场景,例如从付费应用转为含内购的免费应用时识别老用户权益。
Transaction 改进
Transaction 类型代表了成功的应用内购买,iOS 18.4 带来以下变化:
- 废弃了
Transaction.currentEntitlement for productID
API,改用新的Transaction.currentEntitlements
API - 新增三个字段:
appTransactionID
、Offer Period
(关联订阅周期)和advancedCommerceInfo
(仅适用于高级商务 API 用户)
RenewalInfo 扩展
RenewalInfo 类型专用于管理自动续订订阅,新增内容包括:
- 通过 Transaction ID 查询订阅状态的新 API
- 四个新字段:
appTransactionID
、Offer Period
、advancedCommerceInfo
和appAccountToken
(用于关联开发者服务中的用户账户)
优惠码功能扩展
优惠码支持范围得到了显著扩大:
- 现已支持消耗型商品、非消耗型商品和非续订订阅的兑换(回溯至 iOS 16.3)
- 自动续订订阅的优惠码支持可回溯至 iOS 14.2
- 新增
Transaction.Offer.PaymentMode
类型来区分不同优惠的支付模式
请求签名新方法
从 iOS 18.2 开始,StoreKit 引入了需要 UI 上下文的购买方法。不同平台需要提供不同的上下文对象:
- iOS/macCatalyst/tvOS/visionOS:需要提供 UIViewController
- macOS:需要提供 NSWindow
- watchOS:不需要提供上下文
- 在 SwiftUI 视图中,可以通过
purchase
环境值获取PurchaseAction
实例
SwiftUI 订阅展示
新推出的 SubscriptionOfferView
是 StoreKit 视图家族的新成员,专门用于展示自动续订订阅选项。开发者可以通过五种关系类型配置展示逻辑:
1 | // 升级选项展示 |
总结与最佳实践
这些 StoreKit 的增强功能为开发者提供了更强大的工具来构建优质的应用内购买体验。苹果建议开发者:
- 全面采用 StoreKit 2 API
- 利用 StoreKit 视图构建应用商店界面
- 集成 App Store Server Library 简化请求签名流程
通过合理运用这些新特性,开发者可以更高效地管理应用内购买流程,为用户提供更流畅的购买体验。
相关视频和文档请参考以下资源。
相关视频
App Store Connect 的新功能
探索适用于 App 内购买项目的 App Store Server API
认识 StoreKit 与 SwiftUI
认识 StoreKit 2
文档
Advanced Commerce API
Human Interface Guidelines: In-app purchase
Set up offer codes
Simplifying your implementation by using the App Store Server Library
StoreKit