我有一个具有自动可再生订阅的应用程序,购买这些应用程序很好,但是,如果用户删除该应用程序并在以后尝试恢复订阅,我将无法获得期望的数据。

根据apple docs的说法,我应该收到具有原始交易详细信息的originalTranscation,在大多数情况下,在沙盒中,这正是正在发生的情况,但是在某些客户实时应用中,我们收到的原始交易值为零。

谁能想到我为什么不收到原始交易?在[transaction transactionDate]中发送回的日期与我从[[transaction originalTransaction] transactionDate]中获得的期望日期相同,但是我不知道是否可以安全地假设[transaction transactionDate]始终为[transaction transactionDate]是originalTransaction的日期。

最佳答案

我有完全相同的问题。我通过检查原始交易是否为零来返回当前交易来解决它。

这是我在- (void)restoreTransaction:(SKPaymentTransaction *)transaction中替换的代码

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

关于iOS:SKPaymentTransactionStateRestored originalTransaction == nil,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/8501518/

10-12 05:42