如何处理 SKPaymentTransactionStateDeferred?

Uda*_*ega 6 objective-c storekit in-app-purchase ios

我正在将应用内购买添加到我的应用中。对此我有些怀疑。

怎么处理SKPaymentTransactionStateDeferred?我们需要在这种状态下实现自己还是 Apple 会处理这个问题?

如果要实现方式这里怎么处理?如何使用沙盒测试员帐户进行测试?有谁清楚的告诉我。提前致谢。

Sag*_*mar 6

根据 Apple StoreKit 文档,延迟状态是:

交易在队列中,但其最终状态是等待外部操作,例如购买请求。更新您的 UI 以显示延迟状态,并等待另一个指示最终状态的回调。

我们得到交易延期状态,如果用户是苹果家庭共享和家庭管理员启用ASK TO BUY 的一部分

当子用户尝试购买应用内产品时,会向父用户发送请求以供批准。在“购买前询问”流程开始后,家长用户有 24 小时的时间来批准或取消孩子的购买。如果家长未能在 24 小时内做出回应,则“购买前询问”请求将从 iTunes Store 服务器中删除,并且您的应用程序的观察者不会收到任何通知。

您应该更新您的 UI 以反映这种延迟状态。避免在等待交易更新时阻塞您的 UI 或游戏玩法。

沙盒环境中,我们可以使用 SKMutablePayment 测试延迟状态,例如:-

let product = SKMutablePayment(product: productDetails)
product.simulatesAskToBuyInSandbox = true //Enable to test deferred state.
SKPaymentQueue.defaultQueue().addPayment(product)
Run Code Online (Sandbox Code Playgroud)

信息:

iOS 8 引入了“购买前询问”,允许家长批准孩子发起的任何购买,包括 App Store 上的应用或应用内购买。当孩子请求购买时,Ask to Buy 将通过发送 Deferred 状态来指示应用程序正在等待父母对此购买的批准。

  • 不,我们不需要完成延迟状态的事务。它将在交易队列中停留 24 小时,在此期间,如果父母允许购买物品,我们将在交易观察者中声明,否则在 24 小时后我们将获得交易失败观察者。 (2认同)