Ios 等待应用内购买完成,直到执行操作

Ios 等待应用内购买完成,直到执行操作,ios,swift,storekit,swiftystorekit,Ios,Swift,Storekit,Swiftystorekit,当按下按钮时,我使用storekit购买它。但问题是createItems()函数和segue是在确认购买之前执行的。有没有办法做到这一点 func addItems() { IAPService.shared.purchase(product: .nonConsumable) createItems() performSegue(withIdentifier: "returnItems", sender: self) } 我需要在应用内购买完成后运行函数+segu

当按下按钮时,我使用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)
        }
    }
}

一个简单的解决方案是
paymentQueue
方法,当由于购买发生而调用该方法时,通过NotificationCenter发布通知。当购买发生时,需要立即通知的任何其他视图控制器都已注册此通知,因此将在此时听到此通知,并可以采取任何所需的操作


还请记住,您将在某个地方(通常在UserDefaults中)记录购买发生的事实。因此,任何后续视图控制器都可以始终在其
viewDidLoad
视图中进行检查,以查看是否发生了购买,并可以相应地修改其行为。

post
IAPService.shared.purchase
更新了post
paymentQueue(\uqueue:SKPaymentQueue,updatedTransactions事务:[SKPaymentTransaction])
 — 此委托方法在调用purchaseProduct(index:Int)函数后触发。在此回调中,您将获得与IAP事务相关的所有内容(如项目已购买或失败)在其购买状态中嵌入segue代码如果是完全不同的类,我该如何做?