Почему SKPaymentTransactionObserver при добавлении в paymentQueue вызывает функцию делегата paymentQueue? - PullRequest
0 голосов
/ 07 февраля 2019

Я использую среду StoreKit для реализации автоматически обновляемых подписок.Моя реализация работает, но у меня есть проблема с paymentQueue.Когда я добавляю SKPaymentTransactionObserver в эту очередь, он запускает ту же функцию делегата, что и при добавлении SKPayment.Этого можно избежать?

Метод делегата paymentQueue, который запускается при выполнении любого из следующих действий:

SKPaymentQueue.default().add(SKPaymentTransactionObserver)
SKPaymentQueue.default().add(SKPayment)

МЕТОД ДЕЛЕГАТА

// Observe transaction updates.
func paymentQueue(_ queue: SKPaymentQueue, updatedTransactions transactions: [SKPaymentTransaction]) {

    for transaction in transactions{
        //print("rawValue: \(transaction.transactionState.rawValue)")

        switch transaction.transactionState.rawValue{
        case 0:
            // DO NOT 'finishTransaction'
            return print("paymentQueue.purchasing")
        case 1:

            queue.finishTransaction(transaction)
            self.registerPurchaseSuccess()
            return print("paymentQueue.PURCHASE SUCCESS")

        case 2:

            if let error = transaction.error{
                queue.finishTransaction(transaction)
                return print("paymentQueue.FAIL.error: \(error.localizedDescription)")

            }else{

                queue.finishTransaction(transaction)
                return print("paymentQueue.fail. no errors")
            }


        case 3:
            queue.finishTransaction(transaction)
            return print("paymentQueue.pending.restored purchases")
        case 4:
            queue.finishTransaction(transaction)
            return print("paymentQueue.pending")


        default:
            return print("paymentQueue.unresolved issue ...")
        }

    }
}

После успешного добавления моегоSKPaymentTransactionObserver к SKPaymentQueue, в итоге я запускаю функцию self.registerPurchaseSuccess (), которая бессмысленна, поскольку я не совершал никаких платежных транзакций, просто добавил наблюдателя в SKPaymentQueue

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...