簡體   English   中英

Swift:IAP updatedTransactions未調用。已購買

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM