首页 > 解决方案 > 应用内购买成功后关闭按钮 - Ios - Swift - Xcode

问题描述

我试图在应用内购买后关闭一个按钮,并且一旦用户注销或关闭应用程序,它也不会再次出现。在我的代码中购买成功,但按钮仍然存在。

@IBAction func inAppPurch(_ sender: Any) {
  if SKPaymentQueue.canMakePayments() {
    // Can Make payments
    let paymentRequest = SKMutablePayment()
    paymentRequest.productIdentifier = productID
    SKPaymentQueue.default().add(paymentRequest)
    inAppPurch.isHidden = true
  } else {
    // Can't Make payments
    inAppPurch.isHidden = false
    print("cant make payments")
  }
}

func paymentQueue(_ queue: SKPaymentQueue, updatedTransactions transactions: [SKPaymentTransaction]) {
  for transaction in transactions{
    if transaction.transactionState == .purchased {
      //user payment successful
      print("Transaction successful!")
      UserDefaults.standard.set(true, forKey: productID)

      SKPaymentQueue.default().finishTransaction(transaction)
    } else if transaction.transactionState == .failed {
      // payment failed

      if let error = transaction.error {
        inAppPurch.isHidden = false
        let errorDescription = error.localizedDescription
        print("Transaction failed due to error: \(errorDescription)")
      }

      SKPaymentQueue.default().finishTransaction(transaction)
    }
  }
}

标签: iosswiftxcodein-app-purchasestorekit

解决方案


您需要在您的viewDidLoad()or viewWillAppear()... 中获取该 bool 并使用该 bool 值停用

 let id = UserDefaults.standard.bool(forKey: productID)
 button.isHidden = id

默认情况下它会返回,因此当您将其设置为 true 以相应地隐藏您的按钮false时,您的按钮不应被隐藏transaction.transactionState == .purchased

然后每次你去视图控制器它保持隐藏

如果您显示您的按钮代码...我会更好地解释它...这只是想法..您如何实现...


推荐阅读