restoreCompletedTransactions()没有调用paymentQueue updatedTransactions?

我在Swift 4 / iOS 11中恢复IAP时遇到问题。我的AppDelegate实现了SKPaymentTransactionObserver 。 在AppDelegatedidFinishLaunchingWithOptions我正在调用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 } } }