3

在使用沙盒用户测试可再生订阅购买时,我发现了一些奇怪的东西。在 AppStoreConnect 中,您可以选择一个复选框来中断给定沙盒用户的任何付款。如果您在付款过程中这样做

  • 付款应该失败
  • 应提示用户接受应用商店的新条款和条件
  • 然后应该使用相同的产品将新交易添加到 PaymentQueue

我的问题是:委托方法在发生之后永远不会被触发。

public func paymentQueue(_ queue: SKPaymentQueue, updatedTransactions transactions: [SKPaymentTransaction])

当我启动交易时,它确实会被正确触发。似乎在用户接受 T&C 后创建的事务已添加到队列中,但它自身的方法仅在我任一时触发并开始处理事务:手动添加另一个事务或最小化并重新打开应用程序。

根据 Apple 文档,这似乎几乎是正确的:

当付款队列的内容在恢复或运行您的应用程序时发生变化时,StoreKit 可以自动通知您的 SKPaymentTransactionObserver 实例。

用于测试中断购买的 Apple 文档以供参考: https ://developer.apple.com/documentation/storekit/original_api_for_in-app_purchase/testing_in-app_purchases_with_sandbox/testing_an_interrupted_purchase

我的问题是如何处理这样的交易?对于这个中断的事务,它总是以“未知”的 SKErrorCode 失败,到目前为止我发现的唯一可行的解​​决方案是要求用户重新启动应用程序,这是不可接受的。

任何帮助,将不胜感激。谢谢!

4

0 回答 0