inapp购买成功后关闭按钮-Ios-Swift-Xcode

inapp购买成功后关闭按钮-Ios-Swift-Xcode,ios,swift,xcode,in-app-purchase,storekit,Ios,Swift,Xcode,In App Purchase,Storekit,我试图在应用内购买完成后关闭一个按钮,并在用户注销或关闭应用后使其不再出现。 在我的代码中,购买成功,但按钮仍保留 @IBAction func inAppPurch(uu发送方:任何){ 如果SKPaymentQueue.canMakePayments(){ //我可以付款 let paymentRequest=SKMutablePayment() paymentRequest.productIdentifier=productID SKPaymentQueue.default().add(p

我试图在应用内购买完成后关闭一个按钮,并在用户注销或关闭应用后使其不再出现。 在我的代码中,购买成功,但按钮仍保留

@IBAction func inAppPurch(uu发送方:任何){
如果SKPaymentQueue.canMakePayments(){
//我可以付款
let paymentRequest=SKMutablePayment()
paymentRequest.productIdentifier=productID
SKPaymentQueue.default().add(paymentRequest)
inAppPurch.isHidden=true
}否则{
//不能付款
inAppPurch.isHidden=false
打印(“无法付款”)
}
}
func paymentQueue(queue:SKPaymentQueue,updatedTransactions事务:[SKPaymentTransaction]){
交易中的交易{
如果transaction.transactionState==.purchased{
//用户付款成功
打印(“事务成功!”)
UserDefaults.standard.set(true,forKey:productID)
SKPaymentQueue.default().finishTransaction(事务)
}如果transaction.transactionState==。失败,则为else{
//付款失败
如果let error=transaction.error{
inAppPurch.isHidden=false
让errorDescription=error.localizedDescription
打印(“由于错误导致事务失败:\(errorDescription)”)
}
SKPaymentQueue.default().finishTransaction(事务)
}
}
}

您需要在
viewDidLoad()
viewwillbeen()中获取该bool。。。然后用那个布尔值去激活

 let id = UserDefaults.standard.bool(forKey: productID)
 button.isHidden = id
默认情况下,它返回
false
,因此按钮不应隐藏 当您在
transaction.transactionState==.purchased中将其设置为true时,相应地隐藏您的按钮

然后,每次转到视图控制器时,它都保持隐藏状态


如果你显示你的按钮代码。。。我会解释得更好。。。这正是我的想法。。你如何才能做到这一点

您必须将购买状态存储在类似UserDefaults的位置。