在App Purchase中,使用完成处理程序调用productRequest

问题描述

我的项目中有一个IAPService来处理应用内购买:

func getProducts() {
    let products: Set = [IAPProduct.PREMIUM.rawValue]
    let request = SKProductsRequest(productIdentifiers: products)
    request.delegate = self
    request.start()
    paymentQueue.add(self)
}

func purchase(product: IAPProduct) {
    print("purchasing here")
    guard let productToPurchase = products.filter({ $0.productIdentifier == product.rawValue }).first else { print("why"); return }
    let payment = SKPayment(product: productToPurchase)
    paymentQueue.add(payment)
}

extension IAPService: SKProductsRequestDelegate {

    func productsRequest(_ request: SKProductsRequest,didReceive response: SKProductsResponse) {
        self.products = response.products
        for product in response.products {
            print(product.localizedTitle)
        }
    }
}

使用此代码,我可以简单地调用.purchase(Product)。但是问题在于,我必须在此之前致电getProducts,因此我实际上得到了products。我尝试在getProducts内部调用purchase,但由于productsRequestasynchronous(至少我认为)而无法正常工作,在某些情况下会导致问题...。>

那我该怎么打电话给purchase,这样我才不会遇到productRequest的麻烦?

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)