Windows 8. Versiones de prueba de nuestra App

Con Windows 8 se nos abre un abanico de posibilidades para monetizar nuestra aplicación. El API de la Windows Store nos permite controlar las compras de la siguiente forma:

Pagar antes de descargar

Es la opción más simple, no tenemos que implementar ningún código y requiere que el usuario pague la aplicación antes de usarla. En contra posición, es la opción menos efectiva porque ¿quién va a pagar por tu aplicación sin haberla probado?

Versión de prueba limitada por tiempo

Nos permite especificar un período de prueba para que el usuario pueda usar nuestra aplicación antes de pagar por ella. Una vez se ha caducado el periodo de prueba, la aplicación deja de funcionar.

Versión de prueba con funcionalidades limitadas

Esta opción permite al usuario hacer uso de la aplicación y probarla sin necesidad de comprarla. Nos tenemos que hacer cargo de comprobar si estamos en modo de prueba, para que limitemos las funcionalidades en código.

Compras In-app

In-app nos permite vender funcionalidades dentro de nuestra app, por ejemplo, si tenemos una aplicación de recetas, podemos vender paquetes de nuevas recetas desde usando la Windows Store. Es compatible con el resto de tipos, trial o no trial, y es, quizás, la opción que más trabajo nos puede llevar.

Implementando la versión de prueba

WinRT nos proporciona una clase CurrentApp y CurrentAppSimulator que tiene los métodos necesarios para obtener la información de la licencia. Para comprobar si estamos en modo de prueba, tenemos que ver el valor de la propiedad IsTrial de la clase LicenseInformation. Por su puesto, si estamos en depuración debemos de utilizar la clase correspondiente al Simulator.

#if DEBUG


if (CurrentAppSimulator.LicenseInformation.IsTrial)


{


CurrentAppSimulator.LicenseInformation.LicenseChanged += OnLicenseChanged;


GetListingInformationAsync();


}


else


_licensed = true;


#else


if (CurrentApp.LicenseInformation.IsTrial)


{


CurrentApp.LicenseInformation.LicenseChanged += OnLicenseChanged;


GetListingInformationAsync();


}


else


_licensed = true;


#endif


 

También nos debemos de suscribir al evento LicenseChanged para recibir cualquier cambio en la licencia, por ejemplo, el usuario compra la aplicación mientras esta está en ejecución.

private void OnLicenseChanged()


{


#if DEBUG


if (!CurrentAppSimulator.LicenseInformation.IsTrial)


{


_licensed = true;


CurrentAppSimulator.LicenseInformation.LicenseChanged -= OnLicenseChanged;


}


#else


if (!CurrentApp.LicenseInformation.IsTrial)


{


_licensed = true;


CurrentApp.LicenseInformation.LicenseChanged -= OnLicenseChanged;


}


#endif


}


 

Comprobando el valor de IsTrial (o en mi caso la variable _licensed) sabremos en todo momento si estamos en modo de prueba y, si fuera nuestro caso, limitar ciertas funcionalidades que no ofrecemos en el modo de prueba.

Como las versiones limitadas por tiempo dejan de funcionar automáticamente cuando llega la fecha de caducidad, sería importante mostrarle al usuario la fecha de caducidad o el tiempo que le queda del periodo de prueba.

var longDateFormat = new Windows.Globalization.DateTimeFormatting.DateTimeFormatter("longdate");                                                


var daysRemaining = (licenseInformation.ExpirationDate - DateTime.Now).Days;


 

No menos importante es enseñarle al usuario que opciones están limitadas y ofrecerle la compra para poder hacer uso de ellas. Sólo tenemos que usar el método RequestAppPurchaseAsync que tenemos en la clase CurrentApp.

if (App.AppLicenseDataSource.IsTrial)


{


var dialog = new MessageDialog("Estás usando la aplicación en modo prueba, y no es posible es uso de esta característica. Tienes que comprar la aplicación para obtener esa funcionalidad.", "Trial");


dialog.Commands.Add(new UICommand("¿Quieres comprarla?, async command =>


{


#if DEBUG


CurrentAppSimulator.RequestAppPurchaseAsync(false);


#else


CurrentApp.RequestAppPurchaseAsync(false);


#endif


 

}));


dialog.Commands.Add(new UICommand("No"));


dialog.ShowAsync();


}


else


{


Frame.Navigate(typeof(Views.AlbumsPage), item.Id);


}


 

Es importante que pensemos en nosotros mismos como usuarios y que, por lo habitual, no compramos nada que no podamos tocar o probar. Esto mismo tenemos que trasladar a nuestras aplicaciones, son un par de líneas de código que nos permiten comprobar si estamos en modo prueba y así nuestros posibles usuarios podrán probar las bondades de nuestra aplicación y darles un motivo para que la compren.

 

Saludos a todos…

Deja un comentario

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