在应用内购买时,当用户在设备上重新安装应用并在他们已经购买后再次选择购买应用(而不是恢复)的选项时,它将返回{{1}而SKPaymentTransactionStatePurchased
中没有SKPaymentTransactionStateRestored
。
我想知道,有没有办法区分" - (void)paymentQueue:(SKPaymentQueue *)queue updatedTransactions:(NSArray *)transactions
"这是第一次购买而且只是免费重新安装用户已经购买的产品?
答案 0 :(得分:1)
我认为不可能。
你实际上可以做得更好:
当用户第一次购买某些IAP产品时,您可以将该信息存储在iDevice Keychain中。在这种情况下,即使用户删除了应用程序并重新安装它,您也可以通过编程方式检查是否已在钥匙串中设置了相应的值,为用户提供了所有附加功能,而无需让他再次恢复或购买。
仅在重新安装iOS时才会丢失有关购买的信息。
答案 1 :(得分:0)
实际上,有一种方法可以确定这一点。如果:
transaction.originalTransaction != nil && transaction.transactionState == SKPaymentTransactionStatePurchased
然后这表明产品已经被购买。