Покупки в приложении: Слушайте кнопку «Отмена»? - PullRequest
2 голосов
/ 09 февраля 2012

Я пытаюсь выяснить, как я могу прослушать кнопку «Отмена», которая появляется в предупреждении «Подтверждение», которое появляется, когда пользователь пытается что-то купить.Знаете, официальная сделанная Apple, выглядит примерно так: «Подтвердите покупку в приложении. Хотите купить один $ продукт по цене $? [Отмена] [Купить]»

Если я понимаю моикодируйте правильно, предупреждение, инициированное чем-то вроде этого:

SKPayment *payment = [SKPayment paymentWithProductIdentifier:productIdentifier];
[[SKPaymentQueue defaultQueue] addPayment:payment];

Так что в основном я хотел бы сделать что-нибудь, если они нажмут кнопку Отмена.Спасибо

Ответы [ 2 ]

9 голосов
/ 09 февраля 2012

реализует метод paymentQueue:updatedTransactions: из протокола SKPaymentTransactionObserver .Там вы можете проверить transactionState и error каждого transaction объекта.

Я использовал что-то подобное:

- (void)paymentQueue:(SKPaymentQueue *)queue updatedTransactions:(NSArray *)transactions {
    for (SKPaymentTransaction *transaction in transactions) {
        switch (transaction.transactionState) {
            case SKPaymentTransactionStatePurchased:
                [self completeTransaction:transaction];
                break;
            case SKPaymentTransactionStateFailed:
                if (transaction.error.code == SKErrorPaymentCancelled) {
                    /// user has cancelled
                    [self finishTransaction:transaction wasSuccessful:NO];
                }
                else if (transaction.error.code == SKErrorPaymentNotAllowed) {
                    // payment not allowed
                    [self finishTransaction:transaction wasSuccessful:NO];
                }
                else {
                    // real error
                    [self finishTransaction:transaction wasSuccessful:NO];
                    // show error
                }
                break;
            case SKPaymentTransactionStateRestored:
                [self restoreTransaction:transaction];
                break;
            default:
                break;
        }
    }
}
0 голосов
/ 05 июля 2016

Используйте что-то вроде этого:

- (void)paymentQueue:(SKPaymentQueue *)queue updatedTransactions:(NSArray *)transactions {
    for (SKPaymentTransaction *transaction in transactions) {
        switch (transaction.transactionState) {
            case SKPaymentTransactionStatePurchased:
                [self completeTransaction:transaction];
                break;
            case SKPaymentTransactionStateFailed:
                if (transaction.error.code == SKErrorPaymentCancelled) {
                    /// user has cancelled
                    [self finishTransaction:transaction wasSuccessful:NO];
                }
                else if (transaction.error.code == SKErrorPaymentNotAllowed) {
                    // payment not allowed
                    [self finishTransaction:transaction wasSuccessful:NO];
                }
                else {
                    // real error
                    [self finishTransaction:transaction wasSuccessful:NO];
                    // show error
                }
                break;
            case SKPaymentTransactionStateRestored:
                [self restoreTransaction:transaction];
                break;
            default:
                break;
        }
    }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...