微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

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

如何解决在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 举报,一经查实,本站将立刻删除。