Восстановление в приложении без покупки - PullRequest
0 голосов
/ 29 марта 2012

Я работаю над приложением, которое также поддерживает несколько функций, которые можно приобрести через In-app.Я предоставил две кнопки «Купить» и «Восстановить», что означает буквально.

У меня очень простая проблема: что если пользователь нажмет кнопку «Восстановить» и когда его попросят ввести учетные данные в учетных данных, которые никогда не покупались в приложениипокупные товары.Как я должен справиться с этим условием?Насколько я понимаю, когда пользователь нажимает кнопку «Восстановить», мы звоним по номеру restoreCompletedTransactions, который попытается восстановить купленные продукты, и поскольку в случае, когда я имею в виду пользователя, пользователь не приобрел какой-либо продукт, разблокировать его нечего.Я думаю, что магазинный комплект справится с этим автоматически и предоставит возможность покупки.

Это не работает для меня.Если я использую учетную запись, которая никогда не покупала продукт в приложении, и пытаюсь восстановить отсутствие ответа, ни один из делегатов не вызывается.И с другой стороны, если я использую аккаунт, который был приобретен для восстановления, все работает нормально.

Любая помощь будет очень цениться.

Спасибо.

PS ЯЯ использую тестовых пользователей и изолированную программную среду.

1 Ответ

0 голосов
/ 28 июня 2012

Смотрите ответ здесь: Восстановление iOS в приложении возвращает много транзакций

Вам придется обработать это в обозревателе транзакций.

Короче говоря, вы начинаете процесс восстановления с:

[[SKPaymentQueue defaultQueue] addTransactionObserver:self];
[[SKPaymentQueue defaultQueue] restoreCompletedTransactions];

Затем вызывается следующий наблюдатель транзакции:

- (void)paymentQueueRestoreCompletedTransactionsFinished:(SKPaymentQueue *)queue
{
    int thisIsTheTotalNumberOfPurchaseToBeRestored = queue.transactions.count;

    for (SKPaymentTransaction *transaction in queue.transactions)
    {
        NSString *thisIsProductIDThatHasAlreadyBeenPurchased = transaction.payment.productIdentifier;

        if([thisIsProductIDThatHasAlreadyBeenPurchased isEqualToString:product1ID])
        {
            //Enable product1 here
        }
    }
}
...