gpt4 book ai didi

iphone - 多任务处理和 SKPaymentQueue 我得到一个 "stuck"SKPaymentTransaction,交易状态为 SKPaymentTransactionStatePurchasing

转载 作者:可可西里 更新时间:2023-11-01 05:00:34 26 4
gpt4 key购买 nike

我的问题基本上是如何重现我在应用商店的其他应用中看到的关于应用内购买的行为:

  • 在用户按下“购买”按钮后,该按钮会立即隐藏并显示一个微调器(实质上是消除购买操作的跳动)。
  • 用户在 StoreKit 对话框(在应用内或应用外)按下取消键会导致微调器消失。

我试图根据对 SKPaymentQueue 中交易状态的观察来显示和隐藏微调器。

这张海报描述了我的问题:

In App Purchase user cancels tx while app in background: tx state stays on purchasing

无论测试用户是否先登录,我都会看到与上述帖子相同的行为。交易基本上永远“卡在”购买状态的队列中(意味着我的微调器永远显示)。当应用程序完全退出并重新启动(不仅仅是多任务)时,交易不再在支付队列中,因此它显然不是真正的购买。这就像 SKPaymentQueue“错过”了状态变化。

我注意到的更多细节是,在典型情况下,添加付款后,交易会立即显示在队列中,并显示购买状态。如果用户按下取消,交易状态将变为失败。

在添加付款后立即离开任务的情况下,交易不会显示在队列中,直到任务返回应用程序。没有看到对 updatedTransactions 委托(delegate)的两次调用(一个状态为购买状态,另一个状态为失败),只有一次调用状态为购买状态的 updatedTransactions 委托(delegate)。交易永远不会失败。

偶尔,当任务返回到应用程序时,我会收到一个交易已删除的回调(在看到具有购买状态的更新交易后)。即使在这种情况下,我也从未看到交易预期更新为失败状态。

我无法在应用商店的应用中重现这种行为(无论任务是否离开,它们总是正确地显示/隐藏微调器),但我不清楚这是因为它们在做一些棘手的事情,还是如果这只是沙盒中的问题。

如果不通过监视事务状态,如何复制此行为?这不是生产中的问题吗?

谢谢!

最佳答案

我用过MKStoreKit适用于我所有的应用。

它有一个基于 block 的界面,告诉您交易何时开始(隐藏按钮并开始动画)。

它还会告诉您交易是否失败或是否已完成,因此您可以停止动画并恢复按钮(如果失败)或在完成时显示其他内容。

因为它使用 block ,所以您无需编写大量样板代码即可处理所有这些行为。

关于iphone - 多任务处理和 SKPaymentQueue 我得到一个 "stuck"SKPaymentTransaction,交易状态为 SKPaymentTransactionStatePurchasing,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8685680/

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