【问题标题】:SKPaymentQueue does not finish SKPaymentTransaction for an auto-renewable subscription productSKPaymentQueue 未完成自动续订订阅产品的 SKPaymentTransaction
【发布时间】:2023-03-27 14:40:01
【问题描述】:

我正在尝试实施自动续订产品。问题是SKPaymentQueue 不能通过调用SKPaymentQueue.defaultQueue().finishTransaction(transaction) 来完成SKPaymentTransaction。

func paymentQueue(queue: SKPaymentQueue, updatedTransactions transactions: [SKPaymentTransaction]) {
    if let transactions = transactions as? [SKPaymentTransaction] {
        for transaction in transactions {
            switch transaction.transactionState {
            case .Purchasing:
                break
            case .Purchased:
                queue.finishTransaction(transaction) // finish transaction
                self.purchasedWithTranasction(transaction)
            case .Failed:
                queue.finishTransaction(transaction) // finish transaction
                self.failedWithTransaction(transaction)
            case .Restored:
                queue.finishTransaction(transaction) // finish transaction
                self.restoredWithTransaction(transaction)
            case .Deferred:
                queue.finishTransaction(transaction) // finish transaction
            }
        }
    }
}

如上,在paymentQueue:updatedTransactions:方法中,queue.finishTransaction(transaction)被调用。正常情况下,交易已经完成,不会再停留了。

但是当我再次运行该应用程序时,该事务仍未完成。顺便说一句,我在 AppDelegate 中设置了事务观察器,如下所示。因此,当应用程序启动时,剩余的事务将通过调用paymentQueue:updatedTransactions: 开始处理。这和我的预期不一样。

func application(application: UIApplication, didFinishLaunchingWithOptions launchOptions: [NSObject: AnyObject]?) -> Bool {
    // add transaction observer
    SKPaymentQueue.defaultQueue().addTransactionObserver(CargoBay.sharedManager())

    ....

    return true
}

你们对这个问题有任何想法吗?有没有SKPaymentQueue.defaultQueue().finishTransaction(transaction)没有完成交易的情况?

【问题讨论】:

  • 嗨@Mike,你有没有深入了解这个问题?

标签: swift xcode in-app-purchase storekit skpaymenttransaction


【解决方案1】:

您是否可能不再看到相同的交易,而是来自 iTunes 沙盒的新的自动续订交易?

在 iTunes 沙盒中测试自动续订订阅时,他们会人为地加快续订速度。这会导致每隔几分钟出现一次新交易。

来自Testing Your App and In-App Purchase Products:

在测试环境中测试自动续订订阅时,请注意持续时间已压缩。此外,测试订阅最多只能自动续订六次。

  • 1 周:3 分钟
  • 1 个月:5 分钟
  • 2 个月:10 分钟
  • 3 个月:15 分钟
  • 6 个月:30 分钟
  • 1 年:1 小时

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2023-01-25
    • 1970-01-01
    • 2015-02-27
    • 2019-05-29
    • 2020-12-19
    • 2022-08-19
    • 2013-10-08
    相关资源
    最近更新 更多