问题:我调用[[SKPaymentQueue defaultQueue] restoreCompletedTransactions];
并使用空事务数组返回给我的观察者paymentQueueRestoreCompletedTransactionsFinished:
SKPaymentQueue
。但我已经购买了非消费品应用内商品。
我正在测试我的应用如何恢复来自不同州的购买。
重现的简单步骤:
SKPaymentTransactionStatePurchased
transaction,所以我在队列中启用了feature和finalize transaction。SKPaymentTransactionStatePurchased
事务,因此我启用了功能并在队列中完成事务。SKPaymentTransactionStateFailed
的交易。我敲定了它。但是当交易失败时我不会启用功能。[[SKPaymentQueue defaultQueue] restoreCompletedTransactions];
恢复已完成的交易。并返回观察者paymentQueueRestoreCompletedTransactionsFinished:
SKPaymentQueue
,其中包含空transactions
数组。我觉得苹果沙盒服务器现在已经破了,所以我无法正确恢复交易。或者我做错了什么?
答案 0 :(得分:1)
由于您已在步骤3中完成购买,因此无需恢复购买IMHO。
步骤2和4与用户重新安装应用程序不同,因为应用程序已启动并正在运行,因此SKPayment可能会采取措施来减少服务器负载。您最好尝试删除该应用,然后安装,然后立即使用restoreCompletedTransactions
恢复购买。
我的回答是:
在支付队列处理完所有可恢复交易后,将调用
- (void)paymentQueueRestoreCompletedTransactionsFinished:(SKPaymentQueue *)queue
。它只是告诉你恢复过程已经完成。对于每次可恢复购买,系统都会调用
- (void)paymentQueue:(SKPaymentQueue *)queue updatedTransactions:(NSArray *)transactions
,您需要处理transaction
transactions
为transaction.transactionState
的{{1}}中的每个SKPaymentTransactionStateRestored
。