我正在尝试实施自动续订订阅产品。问题是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
}
}
}
}
如上所述,在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)
没有完成交易的情况吗?
答案 0 :(得分:0)
您是否可能无法再次看到相同的交易,而是从iTunes沙箱中看到新的自动续订交易?
在iTunes沙盒中测试自动续订订阅时,他们会人为地加快续订速度。这会导致每隔几分钟就会出现一个新的交易。
来自Testing Your App and In-App Purchase Products:
在测试环境中测试自动续订订阅时,请记住压缩持续时间。此外,测试订阅最多只能自动续订六次。
- 1周:3分钟
- 1个月:5分钟
- 2个月:10分钟
- 3个月:15分钟
- 6个月:30分钟
- 1年:1小时