Cómo solicitar reseñas en SwiftUI en una app

Conseguir valoraciones positivas es importante para cualquier aplicación publicada en la App Store. Las reseñas ayudan a generar confianza y pueden mejorar la visibilidad de una aplicación. En este tutorial vamos a aprender cómo solicitar reseñas en SwiftUI utilizando Swift, Xcode y StoreKit 2.

Apple proporciona una API específica para mostrar al usuario el diálogo de valoración de la aplicación. La ventaja es que el proceso se realiza dentro de nuestra app y no necesitamos crear un formulario personalizado para enviar la valoración a la App Store.

¿Qué necesitamos para solicitar una valoración?

Para implementar esta funcionalidad necesitaremos un proyecto creado con Xcode, una interfaz desarrollada con SwiftUI y una versión de iOS compatible con StoreKit. La API que utilizaremos es RequestReviewAction, disponible a través del framework StoreKit.

Primero debemos importar StoreKit:

import SwiftUI
import StoreKit

Después podemos utilizar el entorno requestReview para acceder a la acción que permite solicitar una valoración.

El modifier environment para acceder a requestReview

En SwiftUI, muchos servicios del sistema se obtienen mediante el entorno de la vista. Para solicitar una reseña podemos declarar:

@Environment(\.requestReview) private var requestReview

A continuación podemos ejecutar requestReview() cuando consideremos que es un buen momento para pedir al usuario que valore nuestra aplicación.

El modifier onAppear

El modifier onAppear permite ejecutar código cuando una vista aparece en pantalla. Podemos utilizarlo para realizar una solicitud de valoración, aunque normalmente no es recomendable mostrarla cada vez que el usuario abre una pantalla.

.onAppear {
    requestReview()
}

Una estrategia más adecuada consiste en solicitar la valoración después de que el usuario haya realizado una acción importante, como completar una tarea, alcanzar un determinado nivel o utilizar una funcionalidad varias veces.

El modifier onChange

El modifier onChange permite reaccionar cuando cambia un valor. Puede ser útil para detectar cuándo el usuario ha completado una acción y, posteriormente, solicitar una valoración.

.onChange(of: tareaCompletada) {
    if tareaCompletada {
        requestReview()
    }
}

Esta técnica permite integrar la solicitud de forma más natural dentro de la experiencia de usuario.

El modifier buttonStyle

Si queremos ofrecer también un botón específico para valorar nuestra aplicación, podemos utilizar un Button y personalizar su apariencia mediante buttonStyle.

Button("Valorar aplicación") {
    requestReview()
}
.buttonStyle(.borderedProminent)

Sin embargo, es importante recordar que Apple controla cuándo se muestra realmente el diálogo de valoración. Llamar a requestReview() no garantiza que el usuario vea una ventana en ese momento.

¿Qué es el texto multilinea en SwiftUI?

El texto multilinea en SwiftUI permite mostrar contenido que ocupa varias líneas dentro de una misma vista. El componente principal para mostrar texto es Text, y podemos combinarlo con diferentes modifiers para controlar su presentación.

Text("""
¿Te está gustando nuestra aplicación?

Tu valoración nos ayuda a seguir mejorándola.
""")
.font(.body)
.multilineTextAlignment(.center)
.padding()

Las comillas triples permiten crear un string multilínea en Swift. Esto resulta especialmente útil cuando queremos presentar mensajes más completos al usuario sin tener que concatenar diferentes cadenas de texto.

Podemos utilizar el texto multilinea para explicar por qué solicitamos una valoración. Por ejemplo, en lugar de mostrar únicamente “Valora nuestra app”, podemos explicar que la opinión del usuario ayuda al equipo de desarrollo a mejorar nuevas versiones.

El modifier multilineTextAlignment

El modifier multilineTextAlignment permite controlar la alineación de las diferentes líneas de un Text. Podemos utilizar valores como .leading, .center o .trailing.

Text("Tu opinión nos ayuda a mejorar la aplicación.")
    .multilineTextAlignment(.center)

Esto resulta especialmente interesante cuando diseñamos una pantalla personalizada antes de solicitar la valoración.

Ejemplo completo en SwiftUI

El siguiente ejemplo reúne los conceptos anteriores en una vista sencilla:

import SwiftUI
import StoreKit

struct ContentView: View {

    @Environment(\.requestReview) private var requestReview

    var body: some View {
        VStack(spacing: 20) {

            Text("""
            ¿Te está gustando nuestra aplicación?

            Tu opinión nos ayuda a mejorarla.
            """)
            .multilineTextAlignment(.center)
            .padding()

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

Buenas prácticas para un iOS Developer

Como iOS Developer, no deberías solicitar una valoración inmediatamente después de abrir la aplicación. Es preferible esperar a que el usuario haya obtenido algún beneficio de ella. También conviene evitar mostrar solicitudes demasiado frecuentes.

Apple limita la frecuencia con la que puede aparecer el diálogo de valoración y decide cuándo mostrarlo. Por este motivo, nuestra aplicación debe limitarse a solicitar la valoración en momentos apropiados y dejar que el sistema gestione la presentación.

Conclusión

Utilizar StoreKit 2 con SwiftUI es una forma sencilla de implementar valoraciones dentro de una aplicación. Gracias a Swift, Xcode y los modifiers de SwiftUI, podemos crear una experiencia integrada y explicar al usuario, mediante texto multilinea, por qué su opinión es importante.

Si estás aprendiendo cómo solicitar reseñas en SwiftUI, recuerda que la clave no está únicamente en llamar a requestReview(), sino en elegir correctamente el momento en el que hacerlo y ofrecer al usuario una experiencia clara y poco intrusiva.

Leave a Reply

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

Related Posts

Sign In

Register

Reset Password

Please enter your username or email address, you will receive a link to create a new password via email.