Hug*_*rom 6 in-app-purchase ios swift
我的代码有问题.函数updatedTransactions仅在事务处理时调用一次.Purchasing并且在事务完成后不调用.
func buyProduct(product: SKProduct) {
let payment = SKPayment(product: product)
SKPaymentQueue.defaultQueue().addTransactionObserver(self)
SKPaymentQueue.defaultQueue().addPayment(payment)
}
func paymentQueue(queue: SKPaymentQueue, updatedTransactions transactions: [SKPaymentTransaction]) {
for transaction in transactions {
print(transaction)
switch (transaction.transactionState) {
case .Purchased, .Restored:
print("Completed")
complete(transaction)
break
case .Failed:
fail(transaction)
break
default:
break
}
}
}
Run Code Online (Sandbox Code Playgroud)
抱歉,我可能回答得有点晚,但这可能与这个问题有关。当 IAP 未达到状态时,您是否正在从 Xcode 测试 IAP .purchased
?
如果是,那么您需要将设备的 App Store ID 设置为您在 iTunes Connect 上创建的 ID(用户菜单、沙盒测试仪)。
如果不是,那么可能是因为您的 SKPaymentQueue 已经包含太多等待完成的交易。您可以使用 检查它SKPaymentQueue.default().transactions
。
就我而言,我有 28 笔交易等待完成,因为我在购买阶段有一个错误的 switch case 语句。
如果是这种情况,您可以在代码中添加这些行viewDidLoad
来完成其中的每一行(在找到它们在代码中未完成的原因后,不要忘记删除它们):
for transaction: AnyObject in SKPaymentQueue.default().transactions {
SKPaymentQueue.default().finishTransaction(transaction as! SKPaymentTransaction)
}
Run Code Online (Sandbox Code Playgroud)