按下按钮时,我使用storekit进行购买。但是问题是createItems()函数和segue是在确认购买之前执行的。有什么办法吗?
func addItems() {
IAPService.shared.purchase(product: .nonConsumable)
createItems()
performSegue(withIdentifier: "returnItems", sender: self)
}
我需要在应用内购买完成后运行功能+ segue。
IAP功能:
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)
}
}
}
答案 0 :(得分:1)
一种简单的解决方案是使用paymentQueue
方法(由于购买已发生)而将其通过NotificationCenter发布通知。购买时需要立即得到通知的任何其他视图控制器都将注册此通知,因此将在此刻获悉,并可以采取任何所需的操作。
也请记住,您将在某个地方(通常在UserDefaults中)记录购买已经发生的事实。因此,任何后续的视图控制器始终可以检入其viewDidLoad
或viewWillAppear
来查看购买是否已经发生,并可以相应地修改其行为。