我已在应用中为应用内购买实施了附加收据验证(受https://developer.apple.com/library/ios/#releasenotes/StoreKit/IAP_ReceiptValidation/_index.html的启发)。 所以,当我拿到SKPaymentTransactionStatePurchased,我执行此验证和成功,我解开游戏的新内容,最后,我通过iOS应用内未完成的购买
[[SKPaymentQueue defaultQueue] finishTransaction:myTransaction];
如果验证过程无法完成,会发生什么完成交易说,由于互联网连接失败,还是用户在验证过程中终止应用程序?在这种情况下,我不会解锁内容,也不会完成交易。我认为这很合乎逻辑。但是,当我重新启动应用程序(已经以“未完成的事务”状态终止)并试图购买应用程序时,我进入SKPaymentTransactionStateFailed状态,并且使用transaction.error.code == SKErrorPaymentCancelled进入SKPaymentTransactionStateFailed状态。 此外还出现一个消息框说:
“您已购买此项目,但它尚未加载。点击”确定“现在加载它。
按下“确定”后,我没有得到任何回叫 - 因此我没有解锁内容。
所以我的问题是: 1)是否确定在未完成的状态,此状态的事务(如果它不能被验证)? 2)我该如何恢复它?也许我错过了“你已经购买...”消息箱附带的一些回调?
P.S.我的应用程序内购买是“消费品”。所以我不能使用
[[SKPaymentQueue defaultQueue] restoreCompletedTransactions];
你有什么作为提供消费型产品? –