Business
Jobs
  • About Us
  • Solutions
    • Job Postings
      Post your job and receive qualified candidates in 48h.
    • Candidate Assessments
      500+ technical and psychological tests, plus anti-fraud.
    • Headhunting
      Tailor-made executive search from start to finish.
    • Payroll + EOR
      Payroll dispersal and EOR across 15+ LATAM countries.
  • Pricing
  • Jobs

0

309
Views
¿Cómo verificar el estado de compra de la compra desde la aplicación (suscripción de renovación automática)?

Creé una función de compra en la aplicación para la aplicación, usando una suscripción de renovación automática. El problema es que no estoy seguro de cómo comprobar el estado de la compra, si la suscripción se ha agotado o sigue activa.

Aquí es donde trato de guardar el estado comprado:

 func paymentQueue(_ queue: SKPaymentQueue, updatedTransactions transactions: [SKPaymentTransaction]) { print("add payment") for transaction: AnyObject in transactions { let trans = transaction as! SKPaymentTransaction print(trans.error) switch trans.transactionState { case .purchased: print("buy ok, unlock IAP HERE") print(p.productIdentifier) let prodID = p.productIdentifier switch prodID { case "com.test.UnlockTools.Subscription1": print("tool set 1 unlocked") uTool1() print("tool set 2 unlocked") uTool2() print("tool set 3 unlocked") uTool3() UserDefaults.standard.set(true, forKey: "isSubbed") default: print("IAP not found") } queue.finishTransaction(trans) case .failed: print("buy error") queue.finishTransaction(trans) break default: print("Default") break } } }

Aquí es donde llamo a UserDefaults y permito o niego la interacción del botón:

 override func viewDidLoad() { super.viewDidLoad() if(SKPaymentQueue.canMakePayments()) { print("IAP is enabled, loading") let productID: NSSet = NSSet(object: "com.test.UnlockTools.Subscription1") let request: SKProductsRequest = SKProductsRequest(productIdentifiers: productID as! Set<String>) request.delegate = self request.start() } else { print("please enable IAPS") } status = UserDefaults.standard.bool(forKey: "isSubbed") ?? false if status == true { unlockTool1.isUserInteractionEnabled = true unlockTool2.isUserInteractionEnabled = true unlockTool3.isUserInteractionEnabled = true } else { unlockTool1.isUserInteractionEnabled = false unlockTool2.isUserInteractionEnabled = false unlockTool3.isUserInteractionEnabled = false } }

Si descubro el estado, podré guardar el estado como verdadero/falso. Intenté usar UserDefaults con cierto éxito. Sin embargo, no estoy seguro si coloqué el código en la mejor ubicación.

Si la suscripción aún está activa, me gustaría permitir que el usuario haga clic en un botón y denegar el clic del botón si la suscripción se agotó.

Agregaré más código si es necesario. Cualquier ayuda sería muy apreciada.

over 4 years ago · Santiago Trujillo
1 answers
Answer question

0

La única forma de verificar el estado de la suscripción es verificar el recibo con Apple para ver si aún es válido usando su /verifyReceipt endpoint - docs .

Lo que podría hacer es almacenar en caché alguna fecha de vencimiento después de la compra y usarla para verificar si la suscripción es válida. Si ha pasado la fecha de vencimiento, puede volver a verificar el recibo con Apple para ver si está renovado. También hay casos extremos en los que se reembolsa a un usuario y su suscripción se cancela antes de la fecha de vencimiento; debe actualizar sus recibos periódicamente con Apple para verificar este caso. Idealmente, todo esto debería ocurrir también en el lado del servidor para evitar la piratería.

Aquí hay una gran publicación que resume muy bien los detalles de las suscripciones de Apple: Las suscripciones de iOS son difíciles

over 4 years ago · Santiago Trujillo Report
Answer question
Find remote jobs

Discover the new way to find a job!

Top jobs
Top job categories
Business
Post vacancy Pricing Sales
Legal
Terms and conditions Privacy policy
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Show me some job opportunities
There's an error!