如何解决在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
,但由于productsRequest
是asynchronous
(至少我认为)而无法正常工作,在某些情况下会导致问题...。>
那我该怎么打电话给purchase
,这样我才不会遇到productRequest
的麻烦?
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。