5

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

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
            }
        }
    }
}

如上所述,InpaymentQueue: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)没有没有完成交易的案例?

4

1 回答 1

2

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

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

测试您的应用和应用内购买产品开始:

在测试环境中测试自动更新订阅时,请记住持续时间是压缩的。此外,测试订阅最多只能自动续订六次。

  • 1 周:3 分钟
  • 1个月:5分钟
  • 2个月:10分钟
  • 3个月:15分钟
  • 6个月:30分钟
  • 1年:1小时
于 2017-08-03T14:10:23.310 回答