VSStoreKit
VSStoreKit 是一个易于使用的库,您可以使用它在其 iOS 应用中进行应用内购买。
要求
- Swift 4.2
- Xcode 10
- iOS 8.0+
安装
CocoaPods (推荐)
use_frameworks!
pod 'VSStoreKit'
文档
阅读文档。由jazzy生成。由GitHub Pages托管。
生成
$ ./build_docs.sh
预览
$ open index.html -a Safari
入门
import VSStoreKit
设计
本库包含五个主要组件,其职责如下
StoreAccess
- 请求Store中的产品,提供价格和购买产品等详细信息PurchasedProductsProtocol
- 符合此协议的实例存储完成购买LocalProductsDataSource
- 符合此协议的实例提供关于应用中可售产品的信息ProductsDataSource
- 也提供关于产品的销售信息,但结合了本地和从Store接收到的产品信息StoreAccessObserver
- 监听StoreAccess状态变更并通过回调方法通知客户端
示例
// 1. Create an instance conforming to PurchasedProductsProtocol
let puchasedProducts: PurchasedProductsProtocol = PurchasedProducts()
// 2. Provide StoreAccess purchaseCompletionHandler so it can mark products as purchased
let storeAccess = StoreAccess.shared
storeAccess.purchaseCompletionHandler = { purchasedProductIdentifier in
puchasedProducts.markProductAsPurchased(purchasedProductIdentifier)
}
// 3. Create an instance conforming to LocalProductsDataSource with your products (in-app purchases)
let localProducts: LocalProductsDataSource = LocalProducts()
// 4. Request products from the store
storeAccess.requestProductsWithIdentifiers(localProducts.productIdentifiers)
// 5. Instantiate ProductsDataSource object that you will use to populate your UITableView, UICollectionView or whatever with products (in-app purchases)
let productsDataSource = ProductsDataSource(localProducts: localProducts, storeProducts: storeAccess)
// 6. Buy product
let productIdentifier = productsDataSource.identifierForProductAtIndex(index)
storeAccess.purchaseProductWithIdentifier(productIdentifier)
// 7. Observe StoreAccess state change with help of StoreAccessObserver by providing it optional handlers for the states you are interested in
let storeAccessObserver = StoreAccessObserver()
storeAccessObserver.receivedProductsStateHandler = {
// reload your products presentation
}
storeAccessObserver.purchasedStateHandler = {
// reload your products presentation
}
作者
弗拉基米尔·舒图克,[email protected]
许可证
VSStoreKit 在 MIT 许可证下可用。更多信息请参阅 LICENSE 文件。