ios InApp покупки: когда и почему SKPaymentTransactionStateRestored отправляется обратно как статус транзакции? - PullRequest
10 голосов
/ 04 сентября 2011

iOS-покупки в приложении: когда и почему SKPaymentTransactionStateRestored отправляется обратно как статус транзакции?

Это связано с наличием плана повторяющейся подписки?

Ответы [ 2 ]

2 голосов
/ 01 декабря 2011

Вы получаете SKPaymentTransactionStateRestored транзакций вместо SKPaymentTransactionStatePurchased транзакций, когда вы восстанавливаете покупки пользователя, отправляя сообщение restoreCompletedTransactions на SKPaymentQueue.

1 голос
/ 17 декабря 2011

Общее правило заключается в обработке обоих обратных вызовов: для покупки и восстановления покупки.

- (void)paymentQueue:(SKPaymentQueue *)queue updatedTransactions:(NSArray *)transactions
{
for (SKPaymentTransaction *transaction in transactions)
    {
    switch (transaction.transactionState)
        {
        case SKPaymentTransactionStatePurchased:
            [self completeTransaction:transaction];
            break;

        case SKPaymentTransactionStateFailed:
            [self failedTransaction:transaction];
            break;

        case SKPaymentTransactionStateRestored:
            [self restoreTransaction:transaction];

        default:
            break;
        }
    }
}

- (void) completeTransaction: (SKPaymentTransaction *)transaction
{
[self recordTransaction: transaction content:transaction.payment.productIdentifier];

[[SKPaymentQueue defaultQueue] finishTransaction: transaction];
}

- (void) restoreTransaction: (SKPaymentTransaction *)transaction
{
[self recordTransaction: transaction content:transaction.originalTransaction.payment.productIdentifier];

[[SKPaymentQueue defaultQueue] finishTransaction: transaction];
}
...