Programación en Swift y SwiftUI para iOS Developers

Cómo solicitar reseñas de una aplicación en SwiftUI usando StoreKit 2

Tutorial completo con Xcode, buenas prácticas y ejemplos reales

Introducción

Las reseñas en la App Store son uno de los factores más influyentes en el éxito de una aplicación iOS. Una buena valoración no solo genera confianza en nuevos usuarios, sino que también mejora la visibilidad de la app dentro de la tienda gracias al App Store Optimization (ASO).

Apple es consciente de la importancia de este aspecto y, por ello, proporciona APIs oficiales que permiten solicitar reseñas directamente desde la aplicación, sin obligar al usuario a salir de ella. Con la llegada de StoreKit 2, Apple moderniza estas APIs para adaptarlas mejor a Swift, SwiftUI y a la programación asíncrona.

En este tutorial aprenderás:

  • Qué es StoreKit 2 y en qué se diferencia de StoreKit clásico
  • Cómo solicitar reseñas usando StoreKit 2 en SwiftUI
  • Cuándo y cómo pedir reseñas sin molestar al usuario
  • Cómo controlar la frecuencia de las solicitudes
  • Ejemplos prácticos y patrones recomendados
  • Errores comunes que debes evitar

Este artículo está pensado para desarrolladores con conocimientos básicos de SwiftUI que quieran implementar un sistema de solicitud de reseñas correcto, moderno y alineado con las normas de Apple.


1. ¿Qué es StoreKit 2?

StoreKit 2 es la evolución del framework StoreKit introducida por Apple a partir de iOS 15. Está diseñada para:

  • Usar APIs modernas basadas en async/await
  • Integrarse mejor con SwiftUI
  • Simplificar la gestión de compras, transacciones y eventos de la App Store
  • Unificar el acceso a funcionalidades relacionadas con la tienda

Aunque StoreKit 2 es más conocido por la gestión de In-App Purchases, también mantiene y moderniza funcionalidades como la solicitud de reseñas.


2. Reseñas en iOS: cómo funciona el sistema de Apple

Antes de escribir código, es importante entender cómo funciona el sistema de reseñas en iOS.

Características clave

  • El sistema muestra un diálogo nativo
  • El usuario puede valorar la app y escribir un comentario
  • El proceso ocurre sin salir de la app
  • Apple controla la frecuencia de aparición

Limitaciones importantes

  • Apple permite mostrar el diálogo hasta 3 veces al año por usuario
  • No hay forma de forzar su aparición
  • No existe ningún callback que indique si el usuario ha valorado la app
  • La llamada puede no mostrar nada si el sistema decide ignorarla

Esto significa que solicitar una reseña es una sugerencia al sistema, no una orden.


3. Normas de Apple sobre la solicitud de reseñas

Apple es estricta con este tema. Incumplir las normas puede provocar el rechazo de la app.

Está permitido

  • Solicitar reseñas usando la API oficial
  • Hacerlo tras una acción positiva
  • Preguntar de forma educada y opcional

Está prohibido

  • Ofrecer recompensas a cambio de reseñas
  • Forzar redirecciones a la App Store
  • Bloquear funciones si el usuario no valora la app
  • Mostrar solicitudes de forma insistente

4. Requisitos del proyecto

Para usar StoreKit 2 necesitas:

  • Xcode 14 o superior (recomendado Xcode 15+)
  • iOS 15 o superior
  • Proyecto SwiftUI

No es necesario configurar nada en App Store Connect para solicitar reseñas.


5. Importar StoreKit en SwiftUI

En cualquier archivo donde vayas a solicitar una reseña, importa StoreKit:

import StoreKit

En StoreKit 2, la funcionalidad de reseñas sigue estando disponible a través del sistema, pero con mejor integración en SwiftUI.


6. La forma recomendada en SwiftUI: requestReview

Aunque StoreKit 2 introduce muchas APIs nuevas, Apple sigue recomendando usar el Environment de SwiftUI para solicitar reseñas.

Acceso al entorno

@Environment(\.requestReview) var requestReview

Este enfoque es totalmente compatible con StoreKit 2 y es el más limpio en apps SwiftUI.


7. Solicitar una reseña de forma básica

El uso más simple es llamar directamente a requestReview().

requestReview()

Esto le indica al sistema que, si lo considera oportuno, muestre el diálogo de reseña.


8. Ejemplo mínimo en SwiftUI

import SwiftUI
import StoreKit

struct ContentView: View {

    @Environment(\.requestReview) var requestReview

    var body: some View {
        VStack(spacing: 24) {
            Text("Gracias por usar nuestra app")
                .font(.title)

            Button("Valorar la aplicación") {
                requestReview()
            }
        }
        .padding()
    }
}

Este ejemplo es funcional, pero no es recomendable usarlo tal cual en producción, ya que no controla el momento ni la frecuencia.


9. Elegir el momento adecuado para pedir una reseña

Uno de los factores más importantes para obtener reseñas positivas es el timing.

Malos momentos

  • Al abrir la app por primera vez
  • Antes de que el usuario haya hecho nada
  • Durante una acción crítica

Buenos momentos

  • Después de completar una tarea
  • Al alcanzar un logro
  • Tras varios usos exitosos
  • Al finalizar una experiencia positiva

10. Controlar la frecuencia con UserDefaults

Aunque Apple limita las solicitudes, es buena práctica añadir tu propio control.

Ejemplo de contador de usos

struct ReviewManager {

    static func incrementUsage() {
        let count = UserDefaults.standard.integer(forKey: "usageCount")
        UserDefaults.standard.set(count + 1, forKey: "usageCount")
    }

    static func shouldRequestReview() -> Bool {
        let count = UserDefaults.standard.integer(forKey: "usageCount")
        return count == 5 || count == 20
    }
}

11. Integración con SwiftUI y StoreKit 2

struct TaskCompletedView: View {

    @Environment(\.requestReview) var requestReview

    var body: some View {
        Text("¡Tarea completada!")
            .onAppear {
                ReviewManager.incrementUsage()

                if ReviewManager.shouldRequestReview() {
                    requestReview()
                }
            }
    }
}

Este enfoque asegura que la reseña solo se solicite tras una experiencia positiva.


12. Preguntar primero si al usuario le gusta la app

Una estrategia muy utilizada es filtrar la experiencia antes de pedir la reseña.

Flujo recomendado

  1. “¿Te está gustando la app?”
  2. Si responde “Sí” → solicitar reseña
  3. Si responde “No” → ofrecer feedback privado
@State private var showAlert = false

.alert("¿Te gusta la app?", isPresented: $showAlert) {
    Button("") {
        requestReview()
    }
    Button("No", role: .cancel) {
        // Mostrar formulario de feedback
    }
}

Este enfoque mejora la calidad de las reseñas y reduce comentarios negativos.


14. StoreKit 2 y escenas (WindowScene)

En algunos casos avanzados, puede ser necesario acceder explícitamente a la escena activa.

if let scene = UIApplication.shared.connectedScenes
    .first(where: { $0.activationState == .foregroundActive }) as? UIWindowScene {

    SKStoreReviewController.requestReview(in: scene)
}

ste método sigue siendo válido y compatible con StoreKit 2, aunque SwiftUI lo abstrae en la mayoría de casos.


15. Diferencia entre solicitar reseña y abrir la App Store

Solicitud interna (recomendada)

  • Diálogo nativo
  • Mejor UX
  • Controlado por Apple

Redirección manual

Solo debe usarse si el usuario lo solicita explícitamente:

let url = URL(string: "https://apps.apple.com/app/idTU_APP_ID?action=write-review")!
UIApplication.shared.open(url)

6. Pruebas en simulador, TestFlight y producción

Simulador

  • El diálogo no siempre aparece
  • No es fiable para pruebas

TestFlight

  • Comportamiento más realista
  • Ideal para validar el flujo

Producción

  • Depende del historial del usuario
  • Apple decide cuándo mostrar el diálogo

17. Errores comunes al solicitar reseñas

– Pedir reseñas repetidamente
– Mostrar alertas agresivas
– Forzar la redirección a la App Store
– Pedir reseña antes de aportar valor
– Ignorar la experiencia del usuario


18. Buenas prácticas de UX

  • Usa un lenguaje amable y claro
  • Haz la solicitud opcional
  • Respeta la decisión del usuario
  • No vuelvas a preguntar inmediatamente si rechaza

19. Ventajas de usar StoreKit 2

  • APIs modernas y seguras
  • Mejor integración con SwiftUI
  • Preparado para el futuro del ecosistema Apple
  • Código más limpio y mantenible

Aunque la solicitud de reseñas no cambia radicalmente respecto a StoreKit clásico, StoreKit 2 encaja mejor en arquitecturas modernas.


20. Conclusión

Solicitar reseñas en una aplicación SwiftUI utilizando StoreKit 2 es técnicamente sencillo, pero requiere una buena estrategia de diseño y experiencia de usuario. Apple pone límites claros para proteger a los usuarios, y respetarlos no solo evita rechazos en la App Store, sino que también genera confianza.

Si solicitas reseñas:

  • En el momento adecuado
  • Con moderación
  • Usando las APIs oficiales
  • Pensando en la experiencia del usuario

obtendrás mejores valoraciones de forma natural y sostenible.

Una buena app no pide reseñas desesperadamente: se las gana.

Si tienes cualquier duda sobre este artículo, contacta conmigo y estaré encantado de ayudarte 🙂.Puedes contactar conmigo en mi perfil de X o en mi perfil de Instagram

Leave a Reply

Your email address will not be published. Required fields are marked *

Previous Article

¿Qué es List en SwiftUI y cómo usarlo en Xcode para presentar datos?

Next Article

Cómo crear un reproductor de vídeo en SwiftUI usando AVKit

Related Posts