[Windows Phone] Rate My App

Introducción

En la Windows Phone Store un factor importante
que suelen tener en cuenta los usuarios para decantarse por descargar
una App u otra son las puntuaciones y las críticas de las mismas. Contar
con un número elevado de críticas manteniendo una nota media elevada
aumenta considerablemente las posibilidades de atraer a usuarios,
destacar en la Store y recibir un más que necesario feedback.

Rate My App

Una
forma efectiva de aumentar el número de críticas de la Aplicación suele
ser el recordar al usuario que realice la crítica tras ciertos usos de
la Aplicación. Rate My App es un componente de Nokia Developer que nos
permite realizar esta acción de una manera sumamente sencilla.
Basicamente muestra un recordatorio al usuario tras haber lanzado la
Aplicación 5, 10 o un número configurado de veces.

NOTA:
Por defecto, cuando una Aplicación con el componente Rate My App se
ejecuta por quinta vez se muestra el recordatorio de añadir crítica a la
misma.

Como solemos hacer, vamos a crear una Aplicación de ejemplo para utilizar y ver las posibilidades de Rate My App:


Creamos un proyecto desde la
plantilla más básica para concentrar nuestra atención en el componente
que nos ocupa en esta entrada.

Tras crear el proyecto lo primero
que vamos a hacer es instalar la librería necesaria para poder usar Rate
My App. Vamos a usar NuGet para ello. Accedemos a:

Tools > Library Package Manager > Manage NuGet Packages for Solution…

Se
nos abrirá una nueva ventana donde podremos buscar el componente.
Buscamos por «RateMyApp» e instalamos la primera opción creada por Nokia
Developer:

NOTA: También podemos instalar la librería usando el Package Manager Console ejecutando el comando: Install-Package RateMyApp

Tras
instalar la librería ya estamos preparados para usar el control. Vamos a
añadir el control en nuestra página principal (MainPage) creada con el
proyecto. Para ello, de entrada, añadimos una referencia a la librería
en el PhoneApplicationPage:

xmlns:rate="clr-namespace:RateMyApp.Controls;assembly=RateMyApp"

El control a utilizar se llamada FeedbackOverlay. Añadiremos el control al final de Grid principal ocupando las dos filas del mismo (propiedad adjunta RowSpan):

<rate:FeedbackOverlay x:Name="FeedbackOverlay"
     Grid.RowSpan="2"
     FeedbackTo="contacto@correo.es"
     ApplicationName="Ejemplo Rate My App"
     CompanyName="Nombre Compañia"/>

Hemos creado el control junto a sus tres propiedades principales:

  • FeedbackTo: Propiedad de tipo string que espera el correo electrónico donde se enviará el feedback escrito por el usuario.
  • ApplicationName: Propiedad de tipo string que mostrará el nombre de la Aplicación en el recordatorio.
  • CompanyName: Propiedad de tipo string que mostrará el nombre de la compañia responsable de la Aplicación.

Todas las propiedades podrían estar en archivos de recursos:

Quedando el control de una manera similar pero realizando bindings a las cadenas del archivo de recusos:

<rate:FeedbackOverlay x:Name="FeedbackOverlay"
     Grid.RowSpan="2"
     FeedbackTo="{Binding Path=LocalizedResources.FeedbackTo, Source={StaticResource LocalizedStrings}}"
     ApplicationName="{Binding Path=LocalizedResources.ApplicationTitle, Source={StaticResource LocalizedStrings}}"
     CompanyName="{Binding Path=LocalizedResources.CompanyName, Source={StaticResource LocalizedStrings}}"
     FirstCount="2"
     SecondCount="4" />

En esta ocasión hemos añadidos otras dos propiedades nuevas. El
control FeedbackOverlay muestra el recordatorio para añadir la crítica
al usuario tras la quinta ejecución de la Aplicación volviendo a
mostrarlo en caso de no haberla añadido tras la décima apertura de la
Aplicación.

Las propiedades añadidas:

  • FirstCount: Propiedad de tipo entero que permite indicar tras cuantas ejecuciones se muestra por primera vez el recordatorio.
  • SecondCount:
    Propiedad de tipo entero que permite indicar tras cuantas ejecuciones
    se muestra por segunda vez el recordatorio si no se ha añadido crítica
    previamente.

Hasta este punto tenemos todo lo necesario para
utilizar el control. Para poder probarlo todo de manera adecuadamente
tenemos a nuestra disposición un helper que nos facilita el acceso a
toda la información relacionada con el control. Podemos asignar esa
información como contexto:

#if DEBUG
DataContext = FeedbackHelper.Default;
#endif

Y acceder a ella desdela interfaz:

<StackPanel>
     <TextBlock Text="{Binding FirstCount, StringFormat='Propiedad First count: {0}'}" />
     <TextBlock Text="{Binding SecondCount, StringFormat='Propiedad Second count: {0}'}" />
     <TextBlock Text="{Binding State, StringFormat='Estado: {0}'}" />
     <TextBlock Text="{Binding LaunchCount, StringFormat='Se ha abierto: {0} veces'}" />
     <TextBlock Text="{Binding IsReviewed, StringFormat='Tiene ya crítica: {0}'}" />
     <TextBlock Text="{Binding LastLaunchDate, StringFormat='Última ejecución: {0:G}'}" />
</StackPanel>

El resultado:

Tenemos información de cuantas veces se ha registrado la ejecución de
la Aplicación, cuando fue la última vez que se ejecuto, estado, valores
de las propiedad First Count y Second Count y si se ha añadido ya una
crítica o no. Sin duda, una información muy útil en el desarrollo.

Con
lo visto hasta ahora tenemos todo lo necesario exigible a un control
para gestionar los recordatorios de añadir crítica. Sin embargo, el
control es totalmente personalizable y contamos con muchas más opciones:

<ctrl:FeedbackOverlay Grid.RowSpan="2"
     EnableAnimation="True"
     RatingTitle="RatingTitle"
     RatingMessage1="Rating Message 1"
     RatingMessage2="Rating Message 2"
     RatingYes="Yes"
     RatingNo="No"
     FeedbackTitle="FeedbackTitle"
     FeedbackMessage1="Feedback Message 1"
     FeedbackYes="Yes"
     FeedbackNo="No"
     FeedbackTo="{Binding Path=LocalizedResources.FeedbackTo, Source={StaticResource LocalizedStrings}}"
     FeedbackSubject="Feedback Subject"
     FeedbackBody="Feedback Body"
     CompanyName="MyCompany"
     FirstCount="2"
     SecondCount="4"
     CountDays="False"
     />

Podemos personalizar los textos de cabecera, de los botones, etc. El resultado podría ser algo como:

Si no se añade crítica se pide feedback al usuario:

Podéis descargar el ejemplo realizado del siguiente enlace:


Más información

3 comentarios en “[Windows Phone] Rate My App”

  1. Hola Javier,

    Tus artículos muy buenos como siempre.

    Se que es una tontería pero cuando leí este artículo por primera vez (me extrañó) pero pensé que FirstCount y SecondCount era de tipo enum o algo parecido puesto que en código pone 2 y 4. Y cuando lo explicas dices 5 y 10 respectivamente.

    Pero nada más lejos de la realidad puesto que es un error en la explicación.

    Saludos,

  2. Hola!

    Las propiedades FirstCount y SecondCount son de las más importantes del control. Ambas son de tipo entero, el valor lo estableces segun tus propias necesidades.

    FirstCount permite indicar tras cuantas ejecuciones se muestra por primera vez el recordatorio para añadir crítica a la App.
    SecondCount permite indicar tras cuantas ejecuciones se muestra por segunda vez el recordatorio si no se ha añadido crítica previamente.

    He modificado el código que podía crear confusión. Ahora ambos muestran los valores 2 y 4 que es además lo que tiene establecido el ejemplo descargable.

    Espero que te sea de utilidad. Gracias por comentar.

    Un saludo.

Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *