gpt4 book ai didi

ios - paymentQueue RestoreCompletedTransactions 完成 : return queue with empty transactions array

转载 作者:塔克拉玛干 更新时间:2023-11-02 21:50:12 25 4
gpt4 key购买 nike

问题:我调用 [[SKPaymentQueue defaultQueue] restoreCompletedTransactions]; 它返回到我的观察者 paymentQueueRestoreCompletedTransactionsFinished: SKPaymentQueue 带有空交易数组。但我已经购买了非消耗性应用内应用。

我正在测试我的应用如何恢复不同状态下的购买。

重现的简单步骤:

  1. 添加付款并完成购买。队列返回 SKPaymentTransactionStatePurchased 交易,因此应用启用功能并完成队列中的交易。
  2. 删除有关购买的信息,以便我重新购买。 (想象一下,用户重新安装了该应用程序,或开始在另一台设备上使用该应用程序)
  3. 再次尝试在应用内购买。收到“你已经购买了这个。点击确定再次免费下载。”。按确定,队列返回 SKPaymentTransactionStatePurchased 交易,因此应用启用功能并完成队列中的交易。
  4. 再次删除有关购买的信息。
  5. 尝试再次进行应用内购买。收到“您已经购买了此应用程序内购买,但尚未下载。”。只有一个 OK 按钮,甚至在您按下它之前,您就会收到状态为 SKPaymentTransactionStateFailed 的交易。该应用程序完成交易,但在交易失败时不会启用该功能。
  6. 最后尝试使用 [[SKPaymentQueue defaultQueue] restoreCompletedTransactions]; 恢复已完成的交易。它返回给观察者 paymentQueueRestoreCompletedTransactionsFinished: SKPaymentQueue 和空的 transactions 数组。

我觉得 Apple Sandbox 服务器出现问题,因此我无法正确恢复交易。还是我做错了什么?

最佳答案

由于您已在第 3 步完成购买,恕我直言,无需恢复该购买。

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


我的旧答案:

- (void)paymentQueueRestoreCompletedTransactionsFinished:(SKPaymentQueue *)queue is called AFTER all restorable transactions have been processed by the payment queue. It just tells you the restoration process is done.

For each restorable purchase, - (void)paymentQueue:(SKPaymentQueue *)queue updatedTransactions:(NSArray *)transactions will be called, and you need to deal with each transaction in transactions that transaction.transactionState being SKPaymentTransactionStateRestored.

关于ios - paymentQueue RestoreCompletedTransactions 完成 : return queue with empty transactions array,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11491681/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com