我正在尝试实现自动可再生订阅产品.问题是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)不完成事务的情况?
发布于 2017-08-03 14:10:23
您是否有可能不再看到相同的事务,而是从iTunes沙箱中看到一个新的自动更新事务?
在iTunes沙箱中测试自动续订订阅时,它们人为地加快了续订率。这将导致每隔几分钟出现一个新事务。
在测试环境中测试自动更新订阅时,请记住持续时间是压缩的。此外,测试订阅最多只能自动续订六次.
https://stackoverflow.com/questions/38828163
复制相似问题