restoreCompletedTransactions() не вызывает paymentQueue updatedTransactions?
У меня проблемы с восстановлением IAP в Swift 4/iOS 11. Мой AppDelegate
инвентарь SKPaymentTransactionObserver
, В AppDelegate
"s didFinishLaunchingWithOptions
Я зову SKPaymentQueue.default().add(self)
, Я реализую paymentQueue(_ queue: SKPaymentQueue, updatedTransactions transactions: [SKPaymentTransaction])
функция в AppDelegate, а также.
Из ViewController
Я могу сделать покупку следующим образом:
let payment = SKPayment(product: products.first!)
SKPaymentQueue.default().add(payment)
Покупка завершается успешно - я получаю updatedTransaction
с государством .purchased
в моем paymentQueue
наблюдатель.
Тем не менее, когда я называю следующее из этого же 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
}
}
}