restoreCompletedTransactions()没有调用paymentQueue updatedTransactions?
我在Swift 4 / iOS 11中恢复IAP时遇到问题。我的AppDelegate
实现了SKPaymentTransactionObserver
。 在AppDelegate
的didFinishLaunchingWithOptions
我正在调用SKPaymentQueue.default().add(self)
。 我也在AppDelegate中实现了paymentQueue(_ queue: SKPaymentQueue, updatedTransactions transactions: [SKPaymentTransaction])
函数。
从ViewController
我可以这样购买:
let payment = SKPayment(product: products.first!) SKPaymentQueue.default().add(payment)
购买成功完成 – 我在paymentQueue
观察者中获得了一个updatedTransaction
,状态为.purchased
。
但是,当我从同一个ViewController
调用以下内容以恢复购买时:
SKPaymentQueue.default().restoreCompletedTransactions()
从不调用paymentQueue updatedTransactions
函数。
由于最初的购买工作正常,我的沙箱用户等似乎已正确设置。 沙盒用户是否有能力恢复购买? 除了调用restoreCompletedTransactions()
以恢复购买之外,我是否还需要做任何其他工作?
更新,这是我的paymentQueue updatedTransactions
代码,它们位于AppDelegate
:
func paymentQueue(_ queue: SKPaymentQueue, updatedTransactions transactions: [SKPaymentTransaction]) { for transaction in transactions{ switch transaction.transactionState{ case .purchased: debugPrint("purchased it!") menuDelegate?.unlockMenu() //unlock the content, then SKPaymentQueue.default().finishTransaction(transaction) break case .failed: debugPrint("failed") SKPaymentQueue.default().finishTransaction(transaction) break case .restored: debugPrint("restored") menuDelegate?.unlockMenu() //unlock the content, then SKPaymentQueue.default().finishTransaction(transaction) break case .purchasing: debugPrint("purchasing...") break case .deferred: debugPrint("deferred...") break } } }