我正在实施In App Purchase并在我的服务器上验证收据。
在SKPaymentTransactionStatePurchased
期间遇到paymentQueue:updatedTransactions:
时,我会将收据发送到我的服务器进行验证。当我的服务器响应OK时,我拨打finishTransaction
。
如果我的服务器处于离线状态或者我无法验证收据,是什么触发应用再次呼叫paymentQueue:updatedTransactions:
,有效地让我有机会重试验证?我注意到重新启动应用程序会这样做 - 还有什么吗?当应用程序继续运行时,是否会在某个固定频率上再次调用它?
是否有手动方式强制事务队列循环?
答案 0 :(得分:1)
我认为TomSwift不想恢复购买的付款, 但他希望申请打电话 paymentQueue:updatedTransactions 再次使用SKPaymentTransactionStatePurchased标志 of nonTransactionTransaction
他知道的唯一方法就是重新启动应用
我曾经尝试过 [[SKPaymentQueue defaultQueue] removeTransactionObserver:mMyStoreObserver]; [[SKPaymentQueue defaultQueue] addTransactionObserver:mMyStoreObserver]; 再次
但它不起作用..
非finishTransaction的问题是 苹果将说已经购买但从未下载过 当尝试再次购买相同的产品ID时,它将进入SKPaymentTransactionStateFailed。
答案 1 :(得分:0)
您可以让应用程序调用
[[SKPaymentQueue defaultQueue] restoreCompletedTransactions];
这将发送到
paymentQueue :( SKPaymentQueue *)队列updatedTransactions :( NSArray *)交易
一组所有交易:
SKPaymentTransactionStateRestored
而不是
SKPaymentTransactionStatePurchased