Imagina esto: un usuario compra una suscripción, cambia de dispositivo, reinstala tu app y de repente pierde el acceso. Es una forma fácil de perder la confianza.
Por eso existe la opción «Restaurar compra». Puede parecer un botón opcional, pero es imprescindible, especialmente para las aplicaciones basadas en suscripción.
Esta opción permite a los usuarios recuperar el acceso al contenido adquirido anteriormente sin tener que volver a pagar.
Se trata de un pequeño botón con un gran papel en la confianza, el cumplimiento normativo y la retención de usuarios.
Por qué es importante
- Confianza del usuario: si alguien ha pagado una vez, espera mantener el acceso, independientemente del dispositivo.
- Carga de soporte: lógica de restauración confusa o inexistente = usuarios enfadados + más tickets.
- Cumplimiento de las normas de la App Store: tanto Apple como Google esperan que incluyas una opción de restauración para determinados tipos de productos.
Qué compras se pueden restaurar
Las compras restaurables incluyen:
- No consumibles: Compras únicas, como acceso de por vida o funciones premium.
- Suscripciones renovables automáticamente: planes mensuales/anuales que se sincronizan entre dispositivos.
- Suscripciones no renovables: Acceso por un período determinado (por ejemplo, un pase de 3 meses).
No restaurable:
- Consumibles como monedas, vidas extra o potenciadores de un solo uso. Están pensados para agotarse.
Cómo funciona el botón «Restaurar compra»
- UI/UX. Añadir un botón «Restaurar compra», normalmente en la configuración o directamente en el muro de pago.
- Activador. Al pulsar, activa una restauración mediante:
- SKPaymentQueue.restoreCompletedTransactions() para iOS
- BillingClient.queryPurchaseHistoryAsync() para Android
- O tu lógica de backend si gestionas los derechos en el lado del servidor
- Actualizar acceso. Una vez completada la restauración, actualice el estado de suscripción del usuario y desbloquee el contenido.
- Añade un texto útil. Una simple línea ayuda a reducir la confusión: «Úsalo si has cambiado de dispositivo o has reinstalado la aplicación».
- Evita la redundancia. Si el usuario ya tiene acceso, desactiva el botón o ocúltalo por completo.
- Lógica de la cuenta. Para aplicaciones con inicio de sesión: vincule las suscripciones a las cuentas de usuario y sincronícelas a través del backend para simplificar la restauración entre dispositivos.
Cómo funciona la restauración de compras en iOS
En iOS, restaurar compras actualiza el recibo de la app y vuelve a entregar los productos vinculados al Apple ID del usuario. El proceso se ejecuta silenciosamente en segundo plano, y la experiencia debe resultar simple y clara.
Así es como hacerlo usando StoreKit nativo (anterior a StoreKit 2):
1. Inicia el proceso de restauración
Llame a restoreCompletedTransactions() para activar el flujo de restauración:
SKPaymentQueue.default().restoreCompletedTransactions()Esto le indica a StoreKit que busque cualquier compra anterior vinculada al Apple ID actual.
2. Gestiona las transacciones restauradas
Escucha la cola de pagos y comprueba los estados de transacción .restored. A continuación, desbloquea el contenido y marca la transacción como finalizada:
func paymentQueue(_ queue: SKPaymentQueue, updatedTransactions transactions: [SKPaymentTransaction]) {
for transaction in transactions {
if transaction.transactionState == .restored {
// Unlock access based on restored product
unlockContent(transaction: transaction)
SKPaymentQueue.default().finishTransaction(transaction)
}
}
}No olvides llamar a finishTransaction(_:). De lo contrario, StoreKit podría seguir reintentando la misma transacción.
3. Gestiona los errores de forma adecuada
La restauración puede fallar debido a recibos inválidos, problemas de red o si el Apple ID no tiene compras elegibles. Muestra un mensaje claro al usuario y registra el error para la depuración.
¿Utiliza Adapty SDK? Nosotros nos encargamos de todo esto, incluida la validación de recibos y los casos extremos, con una sola llamada al método.
Cómo funciona la restauración de compras en Android
En Android, restaurar compras significa verificar el historial de compras del usuario a través de Google Play y reactivar cualquier producto no consumible o suscripción activa. No existe un botón «restaurar» integrado como en iOS. Esto significa que debes gestionarlo manualmente a través de la billing API.
Así es como hacerlo usando la Google Play Billing Library:
1. Consultar el historial de compras
Utilice queryPurchaseHistoryAsync() para recuperar las compras anteriores del usuario:
billingClient.queryPurchaseHistoryAsync(
BillingClient.SkuType.SUBS
) { billingResult, purchaseHistoryList ->
if (billingResult.responseCode == BillingClient.BillingResponseCode.OK && purchaseHistoryList != null) {
for (purchase in purchaseHistoryList) {
// Restore subscription access
restoreEntitlement(purchase)
}
}
}También puede consultar las compras dentro de la aplicación pasando BillingClient.SkuType.INAPP.
2. Valida y desbloquea
Después de obtener el historial de compras, valida los recibos (idealmente del lado del servidor) y otorga el acceso correspondiente. Asegúrate de verificar los datos de firma para prevenir el spoofing.
Adapty se encarga de la validación de compras, la lógica de acceso del usuario y la sincronización multiplataforma de forma nativa.
3. Consideraciones de UX
Dado que los usuarios de Android no esperan un botón «Restaurar compras», puedes:
- Activar la restauración automáticamente al iniciar sesión o al abrir la aplicación
- O bien ofrecer una opción discreta en Ajustes para mayor transparencia
En cualquier caso, asegúrate de que la lógica de restauración se ejecute silenciosamente en segundo plano y actualice la interfaz cuando se restaure el acceso.
Reflexiones finales
El botón «Restaurar compra» puede parecer simple, pero desempeña un papel fundamental en el recorrido de suscripción.
- Genera confianza.
- Reduce la tasa de abandono.
- Te mantiene en cumplimiento normativo.
Hazlo visible. Haz que funcione. Y haz que sea fácil de entender.




