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
        }
    }
}

0 ответов

Другие вопросы по тегам