Восстановление подписанной покупки для автоматически возобновляемых подписок - PullRequest
6 голосов
/ 27 января 2012

Когда я покупаю в моем приложении ранее приобретенные «Автообновляемые подписки» , в нем появляется сообщение

You're currently subscribed to this...

Когда я нажал кнопку ОК, в делегате очереди платежей ..

- (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]; // Why this is called?
                break;
            case SKPaymentTransactionStateRestored:
                [self restoreTransaction:transaction];
            default:
                break;
        }
    }
}

транзакция.transactionState возвращается SKPaymentTransactionStateFailed вместо SKPaymentTransactionStateRestored , это нормально?

Так как мне правильно с этим справиться?

Ответы [ 2 ]

3 голосов
/ 28 января 2012

На самом деле вы не можете определить, подписан ли уже пользователь.У вас должна быть кнопка Подписаться , которую используют новые пользователи для подписки, и кнопка Восстановить для уже подписанных пользователей.

А когда вы получите SKPaymentTransactionStateFailed, вы можете показать сообщениекоторый предлагает использовать кнопку Восстановить в случае, если пользователь уже подписан.

2 голосов
/ 28 января 2012

У меня та же проблема, и я не думаю, что есть какой-либо способ отличить это событие от других ошибок (возвращается код ошибки SKErrorPaymentCancelled). Я думаю, что единственный способ справиться с этим - воспользоваться кнопкой «Восстановить покупки» и вызвать [[SKPaymentQueue defaultQueue] restoreCompletedTransactions], когда пользователь нажмет ее.

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