StoreFrontKit
简介
Apple 的 StoreKit 框架提供了简洁的 API,用于与 App Store 交云进行内购,但遗漏了向用户提供显示内购界面组件的部分。这是因为在大多数情况下,每个应用程序看起来和感受都不同。
但是,很多时候,我们都发现自己反复编写一个“店面”类型的组件。该界面包含有关我们正在销售的产品、订阅或服务的相关信息。此外,它还向用户提供了一个购买、恢复或订阅的召唤行动。
StoreFrontKit 是一个完全托管且轻量级的框架,用于解决此问题。该框架实现以下功能
- 完全托管的 App Store 产品获取和缓存
- 交易管理和购买恢复
- 单个商品 Store Front
- 多个商品 Store Front
- 免费试用订阅 Store Front 升级
- 订阅组 Store Front
安装
CocoaPods
在您的 Podfile
中包含以下行
pod 'StoreFrontKit'
手册
您可以下载或克隆此仓库,并直接使用源代码。
使用方法
使用 StoreFrontKit
有 2 个步骤
应用启动时配置
首先,您需要在应用中配置 StoreFrontKit,以管理您希望在该应用中管理的内购产品标识符。要求是在使用 storefront UIs 之前完成此操作。建议您在您的 App Delegate 中执行此操作,如下所示。
@main
class AppDelegate: UIResponder, UIApplicationDelegate {
func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplication.LaunchOptionsKey: Any]?) -> Bool {
// Set Up Store Front
SFKManager.shared.configure(
with: StoreFrontKitConfiguration(
products: [
.nonConsumable(
productID: "com.example.item", viewModel: nil
),
.subscription(
productID: "com.example.subscription", viewModel: nil
),
]
)
)
return true
}
}
显示商店
创建商店与创建并推送视图控制器一样简单。
let vc = SFKNonConsumableViewController(
with: .nonConsumable(
productID: Products.removeAds.rawValue,
viewModel: StoreFrontProductViewModel(
icon: UIImage(systemName: "x.square"),
iconTintColor: .systemPink
)
)
) { result in
switch result {
case .success: break
case .failure: break
}
}
vc.title = "Remove Ads"
vc.navigationItem.largeTitleDisplayMode = .always
self?.navigationController?.pushViewController(vc, animated: true)
在上面的示例中,我们创建了一个单个项目(非消耗性)商店视图控制器并推送它。您还会注意到它需要回调完成块。此块传达了成功的内购交易。
更多信息
查看此仓库中包含的示例应用程序目标。
参与贡献
对这个框架的贡献不仅受到欢迎,更是受到鼓励!请随意提交拉取请求或问题报告,以提出功能请求和错误修复。建议您遵循以下几点规则:
- 构建通用的组件,不仅仅针对您个人使用
- 遵循清晰架构原则
- 编写可测试的代码及其相关测试
版权
在MIT许可证下发行