Зная, когда пользователь нажал кнопки отмены во время покупки в приложении

Я пишу код для покупок в приложении и использую представление "Обработка..." с индикатором активности, чтобы заблокировать кнопку "Купить сейчас" после начала покупки. Тем не менее, как вы можете определить, когда пользователь нажимает кнопку "Отмена", поскольку эти представления предупреждений приходят из AppStore.app?

Есть ли метод делегата, который вызывается при нажатии этих кнопок отмены? Или это вопрос вашего взгляда firstResponder снова? Что мне здесь не хватает?

Если вы не думаете, что это возможно, взгляните на приложение "I Am T-Pain"... они делают нечто очень похожее и отклоняют свой вид сразу после нажатия кнопки отмены.

http://i37.tinypic.com/1t4ead.png

1 ответ

Решение

При условии, что все настроено правильно, у вас должен быть объект, реализующий SKPaymentTransactionObserver, который будет получать обратные вызовы для успешной / неудачной / отмены транзакции.

В моем примере это объект purchaseManager, упомянутый в этом вызове

  [[SKPaymentQueue defaultQueue] addTransactionObserver:purchaseManager];

Когда пользователь отменяет платеж, вы должны получить обратный вызов с состоянием транзакции отменено:

- (void)paymentQueue:(SKPaymentQueue *)queue updatedTransactions:(NSArray *)transactions {

        switch (transaction.transactionState)
        {
            case SKPaymentTransactionStatePurchased:
                [self completeTransaction:transaction];
                break;

            case SKPaymentTransactionStateFailed:
                // THIS IS THE STATE YOU SHOULD SEE
                [self failedTransaction:transaction];
                break;

                           ...
}

Вы можете использовать этот обратный вызов, чтобы отклонить ваше мнение и т.д...

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