Xcode 12 引入了StoreKit 配置文件,这些文件非常适合在深入研究 App Store Connect、沙盒等之前测试基本的 StoreKit 功能。
有没有办法在运行时(甚至在编译时)确定方案的StoreKit Configuration
值是设置为“无”还是某个文件?
Xcode 12 引入了StoreKit 配置文件,这些文件非常适合在深入研究 App Store Connect、沙盒等之前测试基本的 StoreKit 功能。
有没有办法在运行时(甚至在编译时)确定方案的StoreKit Configuration
值是设置为“无”还是某个文件?
我只是想知道同样的问题,因为由于我执行本地收据验证,我必须使用正确的证书:StoreKit 或 Apple 的根。
解决方案非常简单:在您的 .storekit 文件中添加一个新产品,以检查您使用的是本地配置还是沙盒/App Store 配置。
添加一个名为using_store_kit_conf的新产品 ID ,然后将 ID 数组传递给SKProductsRequest
包含该 ID 的数组。当您在委托中获得产品列表时,检查using_store_kit_conf产品是否存在以确定您是否正在使用 StoreKit 配置文件。
如果您向用户列出所有产品,请记住过滤掉using_store_kit_conf产品。
样本:
static let premiumOneTime = "premium_one_time"
static let usingStoreKitConfiguration = "using_store_kit_conf"
static let productIds: Set<String> = [InAppPurchase.premiumOneTime, InAppPurchase.usingStoreKitConfiguration]
private var products: [SKProduct] = []
传递所有 ID:
productsRequest = SKProductsRequest(productIdentifiers: InAppPurchase.productIds)
代表:
func productsRequest(_ request: SKProductsRequest, didReceive response: SKProductsResponse) {
self.products = response.products
print("InAppPurchase products: ", response.products)
}
检查是否使用 StoreKit 配置:
var isUsingStoreKitConfiguration: Bool {
products.contains(where: { product in product.productIdentifier == InAppPurchase.usingStoreKitConfiguration })
}
注意:这仅在您加载产品列表后才有效,否则isUsingStoreKitConfiguration
将始终返回 false。