IOS: SKPaymentTransactionStateRestored originalTransaction == nil

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

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

Может кто-нибудь подумать, почему я не получил бы оригинальное ТРАНСФЕРАЦИЯ? Дата, отправленная обратно в [transaction transactionDate], такая же, как я ожидал бы от [[transaction originalTransaction] transactionDate], но я не знаю, можно ли предположить, что если исходное транзакционное значение равно нулю, то транзакционная транзакция всегда будет дата начала оригинального транзакции.

Ответ 1

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

вот код, который я заменил в - (void)restoreTransaction:(SKPaymentTransaction *)transaction

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