首页 文章

paymentQueueRestoreCompletedTransactionsFinished:返回具有空事务数组的队列

提问于
浏览
1

问题:我调用 [[SKPaymentQueue defaultQueue] restoreCompletedTransactions]; 然后返回我的观察者 paymentQueueRestoreCompletedTransactionsFinished: SKPaymentQueue ,其中包含空事务数组 . 但我已经购买了 non-consumable in-apps .

我正在测试我的应用如何恢复来自不同州的购买 .

简单的重现步骤:

  • 添加付款并完成购买 . queue return SKPaymentTransactionStatePurchased transaction,所以我启用了功能并在队列中完成了事务 .

  • 删除有关购买的信息,以便我可以重新购买 . (想象一下,用户重新安装了应用程序,或者开始在其他设备上使用该应用程序)

  • 尝试再次在应用内购买 . 收到“你已经购买过这个 . 点击确定再次免费下载 . ”所以我按下OK . 并再次队列返回 SKPaymentTransactionStatePurchased 事务,因此我启用了功能并在队列中完成事务 .

  • 删除了有关购买的信息 . :)

  • 尝试再次购买应用程序内 . 收到“你've already purchased this In-App Purchase but it hasn'已被下载 . ”只有一个OK按钮,甚至在您按下它之前,您将收到状态 SKPaymentTransactionStateFailed 的交易 . 我敲定了它 . 但是当交易失败时我不会启用功能 .

  • 最后尝试使用 [[SKPaymentQueue defaultQueue] restoreCompletedTransactions]; 恢复已完成的事务 . 它返回观察者 paymentQueueRestoreCompletedTransactionsFinished: SKPaymentQueue ,空 transactions 数组 .

我觉得现在苹果沙箱服务器出了问题,所以我无法正确恢复交易 . 或者我做错了什么?

1 回答

  • 1

    由于您已在步骤3中完成购买,因此无需恢复购买IMHO .

    步骤2和4与用户重新安装应用程序不同,因为应用程序已启动并正在运行,因此SKPayment可能会采取措施来减少服务器负载 . 您最好尝试删除应用程序,然后安装,然后立即使用 restoreCompletedTransactions 恢复购买 .


    我的回答是:

    • (void)paymentQueueRestoreCompletedTransactionsFinished:(SKPaymentQueue *)队列在支付队列处理完所有可恢复的交易后被调用 . 它只是告诉你恢复过程已经完成 . 对于每次可恢复购买, - (void)paymentQueue:(SKPaymentQueue *)队列updatedTransactions :( NSArray *)将调用事务,并且您需要处理transaction.transactionState为SKPaymentTransactionStateRestored的事务中的每个事务 .

相关问题