在使用沙盒用户测试可再生订阅购买时,我发现了一些奇怪的东西。在 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 失败,到目前为止我发现的唯一可行的解决方案是要求用户重新启动应用程序,这是不可接受的。
任何帮助,将不胜感激。谢谢!