@uzolenta

Как обработать in-app-purchase статус deferred?

Здравствуйте!
данный статус "deferred" же означает, что покупка совершена, но не закончена?

У Google, например, есть проблема, что пользователь начинает покупку, а заканчивает ее через долгое время (не знаю как так до сих пор), соответственно, приложение не дожидается ответа от Google и не может дальше зачислять внутренние монеты в приложении. У Apple такая же проблема есть?

Не понял, как поступать: https://developer.apple.com/documentation/storekit...
В основном везде примерно как и у меня код, без обработки этого статуса покупки:
func paymentQueueRestoreCompletedTransactionsFinished(_ queue: SKPaymentQueue) {
        purchaseStatusBlock?(.restored)
    }
    
    func paymentQueue(_ queue: SKPaymentQueue, updatedTransactions transactions: [SKPaymentTransaction]) {
        for transaction:AnyObject in transactions {
            if let trans = transaction as? SKPaymentTransaction {
                
                switch trans.transactionState {
                case .purchased:
                    print("purchased")
                    SKPaymentQueue.default().finishTransaction(transaction as! SKPaymentTransaction)
                    purchaseStatusBlock?(.purchased)
                    check()
                    break
                    
                case .failed:
                    print("failed")
                    SKPaymentQueue.default().finishTransaction(transaction as! SKPaymentTransaction)
                    break
                case .restored:
                    print("restored")
                    SKPaymentQueue.default().finishTransaction(transaction as! SKPaymentTransaction)
                    break
                    
                default: break
                }}}
    }


Разъясните, пожалуйста, как обрабатывать незавершенные транзакции.
  • Вопрос задан
  • 45 просмотров
Пригласить эксперта
Ответы на вопрос 1
YeahGarage
@YeahGarage
Developer
Интересно что опытные ребята ответят, я deferred отлавливаю только в данном варианте
extension IAPManager: SKPaymentTransactionObserver {
    
    
    func paymentQueue(_ queue: SKPaymentQueue, updatedTransactions transactions: [SKPaymentTransaction]) {
        
        for transaction in transactions {
            switch transaction.transactionState {
            case .deferred: break
            case .purchasing: break
            case .failed: print("failed")
            case .purchased: print("purchased")
            case .restored: print("restored")
            }
        }
    }
    
}
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через TM ID
Похожие вопросы