问题描述
我的项目中有一个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 (将#修改为@)