El namespace Microsoft.Phone.Marketplace
public partial class App : Application
{
public static Boolean DemoMode = false;
}
En el evento Launching, que se ejecuta cuando la aplicación se abre desde 0, sin que haya sido desactivada por otro programa o por el usuario, comprobamos en que modo nos encontramos:
// Code to execute when the application is launching (eg, from Start)
// This code will not execute when the application is reactivated
private void Application_Launching(object sender, LaunchingEventArgs e)
{
//Comprobamos si nos encontramos en modo demo.
Microsoft.Phone.Marketplace.LicenseInformation InfoLicencia;
InfoLicencia = new Microsoft.Phone.Marketplace.LicenseInformation();
//Establecemos si nos encontramos en modo demo.
DemoMode = InfoLicencia.IsTrial();
}
Y en el evento Activated, que se ejecuta cuando la aplicación se abre después de ser desactivada por otro proceso o por el usuario, comprobamos en que modo nos encontramos de nuevo:
// Code to execute when the application is activated (brought to foreground)
// This code will not execute when the application is first launched
private void Application_Activated(object sender, ActivatedEventArgs e)
{
//Comprobamos si nos encontramos en modo demo.
Microsoft.Phone.Marketplace.LicenseInformation InfoLicencia;
InfoLicencia = new Microsoft.Phone.Marketplace.LicenseInformation();
DemoMode = InfoLicencia.IsTrial();
}
Y con esto, en nuestro código ya solo tendremos que comprobar el valor de la propiedad DemoMode de la clase App para saber si debemos mostrar la publicidad, limitar el numero de items de algunas listas, pedirle al usuario que nos ayude a llegar a fin de mes o la estrategia que queramos seguir para mostrar y vender nuestra aplicación.
Bien, ya sabemos como convertir nuestra aplicación en una demo de forma automática, pero…. ¿como hacemos para ayudar al usuario a comprar nuestra aplicación? Bien, aquí entra en juego uno de los Launchers de WP7: el MarketplaceDetailTask.
El launcher MarketplaceDetailTask
Espera, espera…. ¿Por las barbas de mi abuelo…..que es un launcher? Bien, es muy común el caso en el que queramos hacer uso de funcionalidad del propio sistema operativo, como puede ser hacer una llamada, enviar un email o sms, abrir el navegador web y algunas cosas más. Esto lo podemos realizar mediante un Api que expone el sistema, localizada en el namespace Microsoft.Phone.Tasks. Hay dos tipos de tareas, las que lanzan una característica del teléfono, como por ejemplo enviar un email, y no devuelven nada a nuestra aplicación se llaman Launchers y las que lanzan una característica del teléfono y devuelven un resultado, como por ejemplo seleccionar una imagen del HUB de imágenes, que se llaman Choosers.
Una vez aclarado esto, existe un Launcher llamado MarketplaceDetailTask que nos permite abrir desde nuestra aplicación el Hub del marketplace del sistema en los detalles de una aplicación específica.
-
ContentType indica el tipo de contenido que podemos mostrar, se le asigna un valor del enumerador Microsoft.Phone.Tasks.MarketplaceContentType, que puede ser Applications o Music.
-
ContentIdentifier indica el ID único del marketplace de la aplicación que queremos mostrar, si queremos mostrar los detalles de nuestra propia aplicación bastará con pasarle un valor nulo.
Por último, solo debemos usar el método Show de la clase MarketplaceDetailTask para que nuestra aplicación se desactive y se muestre el marketplace con nuestros detalles.
Microsoft.Phone.Tasks.MarketplaceDetailTask Detalles;
Detalles = new Microsoft.Phone.Tasks.MarketplaceDetailTask();
Detalles.ContentType = Microsoft.Phone.Tasks.MarketplaceContentType.Applications;
Detalles.ContentIdentifier = App.AppUniqueID;
Detalles.Show();
Conclusión
Y con esto terminamos este artículo, Como siempre os dejo un pequeño proyecto de ejemplo con todo lo que hemos visto aplicado, para que podáis probarlo, tened en cuenta que el marketplace os dirá que no se puede acceder en estos momentos, pues todavía no está disponible para su uso.
Podéis contactar conmigo por mi correo, por Twitter, aquí dejando un mensaje o incluso en los foros de Silverlight / WPF de MSDN por los que siempre ando. Estaré encantado de resolver cualquier duda que tengáis (sobre esto… el sentido de la vida no me dejan revelarlo) y charlar un rato con vosotros.
Muchas gracias por leerme, sin todos vosotros estas palabras no tendrían sentido de existir.
Un gran saludo y Happy Coding!