Swift: 购买完成如何通知

Swift: How to notify when purchase is complete

购买完成后我有一个SKPaymentTransactionObserver检查

extension IAPService: SKPaymentTransactionObserver {
func paymentQueue(_ queue: SKPaymentQueue, updatedTransactions transactions: [SKPaymentTransaction]) {
    for transaction in transactions {
        print(transaction.transactionState.status(), transaction.payment.productIdentifier)
        if transaction.transactionState.status() == "purchased" {
            // Pro Purchased
        }
        switch transaction.transactionState {
        case .purchasing: break
        default: queue.finishTransaction(transaction)
        }
    }
}
}

如何在 ViewController 上隐藏购买完成后购买的物品

您可以在 IAPService 中创建闭包 class:

var productDidPurchased: (() -> Void)?

然后在你的扩展中你可以这样使用它:

switch transaction.transactionState {
    case .purchasing: 
        break
    case .purchased:
        productDidPurchased?()
    default:
        queue.finishTransaction(transaction)
}

然后在您的 ViewController 中检索它:

IAPService.shared.productDidPurchased = { 
    [weak self] in 
    //you will receive a callback when the product is purchased and can hide your view here 
}