[英]Swift: IAP updatedTransactions not called on .Purchased
我的代碼有問題。 函數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
}
}
}
對不起,我可能會回答一下,但這可能與這個問題有關 。 您是否在Xcode沒有達到.purchased
狀態時測試您的IAP?
如果是,則需要將設備的App Store ID設置為您在iTunes Connect上創建的ID(用戶菜單,沙盒測試儀)。
如果不是,那么可能是因為你的SKPaymentQueue已經包含太多等待完成的交易。 您可以使用SKPaymentQueue.default().transactions
。
在我的情況下,我有28個交易等待完成,因為我在購買階段有一個糟糕的開關案例聲明。
如果是這種情況,您可以在viewDidLoad
添加這些行來完成它們中的每一行(不要忘記在找到它們未在代碼中完成的原因后刪除它們):
for transaction: AnyObject in SKPaymentQueue.default().transactions {
SKPaymentQueue.default().finishTransaction(transaction as! SKPaymentTransaction)
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.