2011-12-14 2 views
10

У меня есть приложение с автоматически обновляемыми подписками, покупка которых прекрасна, однако, если пользователь удаляет приложение и пытается восстановить подписки на более позднюю дату, я не возвращаюсь ожидаемые данные.iOS: SKPaymentTransactionStateRestored originalTransaction == nil

В соответствии с apple docs, я должен получить оригинальную транзакцию с деталями начальной транзакции, в большинстве случаев и в песочнице, это именно то, что происходит, однако в некоторых наших живых приложениях для наших клиентов мы получаем нулевое значение для originalTransaction.

Может ли кто-нибудь подумать, почему я не получил бы первоначальный переход? Дата, отправленная обратно в [transaction transactionDate], такая же, как я ожидал бы от [[transaction originalTransaction] transactionDate], но я не знаю, можно ли предположить, что если исходное транзакционное значение равно нулю, то транзакционная транзакция всегда будет быть датой первоначального транзакции.

+0

просто пройти через это .. http://stackoverflow.com/questions/9537663/ios-how-to-get-a-list- уже приобретенных продуктов –

ответ

1

У меня была такая же проблема. Я разрешил его, проверив, является ли исходная транзакция нулевым, возвращает текущую транзакцию.

здесь код я заменил в - (void)restoreTransaction:(SKPaymentTransaction *)transaction

if (transaction.originalTransaction.payment.productIdentifier) { 
    [self provideContentForProductIdentifier:transaction.originalTransaction.payment.productIdentifier]; 
} else { 
    [self provideContentForProductIdentifier:transaction.payment.productIdentifier]; 
} 
+0

Не могли бы вы объяснить это подробно? – Gaurav

+0

@Gauravakasparsh во время тестирования Я обнаружил, что сервер возвращал nill для некоторых из исходных транзакций, для чего я разместил условие if и заменил его текущей транзакцией, если ее nill. – Sam

+0

Спасибо за подтверждение, то же самое произошло со мной, и я тоже исправил его, обратившись с нуля. – Gaurav

Смежные вопросы