2

Xcode 12 引入了StoreKit 配置文件,这些文件非常适合在深入研究 App Store Connect、沙盒等之前测试基本的 StoreKit 功能。

有没有办法在运行时(甚至在编译时)确定方案的StoreKit Configuration值是设置为“无”还是某个文件?

4

1 回答 1

1

我只是想知道同样的问题,因为由于我执行本地收据验证,我必须使用正确的证书: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。

于 2022-01-15T07:43:59.973 回答