当按下按钮时,我使用 storekit 购买它。但问题是 createItems() 函数和 segue 是在确认购买之前执行的。有什么办法吗?
func addItems() {
IAPService.shared.purchase(product: .nonConsumable)
createItems()
performSegue(withIdentifier: "returnItems", sender: self)
}
我需要在应用内购买完成后运行函数 + segue。
内购功能:
func purchase(product: IAPProduct) {
guard let productToPurchase = products.filter({ $0.productIdentifier == product.rawValue}).first else {return}
let payment = SKPayment(product: productToPurchase)
paymentQueue.add(payment)
}
支付队列函数
func paymentQueue(_ queue: SKPaymentQueue, updatedTransactions transactions: [SKPaymentTransaction]) {
for transaction in transactions {
print(transaction.transactionState.status(), transaction.payment.productIdentifier)
switch transaction.transactionState {
case .purchasing:
break
default:
queue.finishTransaction(transaction)
}
}
}
最佳答案
一个简单的解决方案是 paymentQueue
方法,当它因为购买已经发生而被调用时,通过 NotificationCenter 发布一个 Notification。任何其他需要在购买发生时立即得到通知的 View Controller 都已注册此通知,因此会在那一刻听到它并可以采取任何所需的操作。
还要记住,您将在某处(通常是在 UserDefaults 中)记录购买已发生的事实。因此,任何后续 View Controller 始终可以检查其 viewDidLoad
或 viewWillAppear
以查看购买是否已经发生,并可以相应地修改其行为。
关于ios - 等到 In App Purchase 完成,直到执行操作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53859858/