【发布时间】:2017-01-07 12:41:29
【问题描述】:
我想在我的应用中实现年度订阅,我使用StoreKit 来实现。问题是,当我点击subscriptionButton 时。引发错误的应用程序:'NSInvalidArgumentException', reason: 'Cannot finish a purchasing transaction'。我被困在这个地方,无法解决我的问题。所以,我的paymentQueue 代码如下所示:
func paymentQueue(_ queue: SKPaymentQueue, updatedTransactions transactions: [SKPaymentTransaction]) {
print(transactions)
for transaction in transactions {
print(transaction.error ?? "")
switch transaction.transactionState {
case .deferred:
print("deffered")
case let .failed(err):
print("failed: \(err)")
case .purchased:
let productID = p.productIdentifier
selectProduct(productID: productID)
case .purchasing:
print("purhasing")
print("produkt name: \(p.localizedTitle)") // after executing this line of code app crashes
case .restored:
let productID = p.productIdentifier
selectProduct(productID: productID)
}
queue.finishTransaction(transaction)
}
}
您有什么建议,我该如何解决?
【问题讨论】:
-
您得到这样的结果是因为当您在执行“queue.finishTransaction(transaction)”方法后检测到购买状态时会停止进一步的处理。仅添加特定于“.purchased”、“.restored”和“.failed”状态的方法。
-
非常适合您的建议!它有效:)
标签: ios swift storekit skpaymenttransaction