Una de la mejores características en el desarrollo de Windows Phone es la facilidad para generar versiones trial de nuestras aplicaciones, pudiendo activar la aplicación completa sin tener que mantener 2 versiones de la misma y por ende, tener diferentes proyectos de una aplicación.
Para ello Microsoft.Phone.Marketplace nos provee de la clase LicenseInformation, la cual nos expone la propiedad IsTrial, la cual devolviendo un valor booleano, podemos saber si la aplicación funciona en modo en modo “demo” o completo.
Un pequeño ejemplo, crearemos una aplicación :
Imports Microsoft.Phone.Marketplace Partial Public Class MainPage Inherits PhoneApplicationPage ' Constructor Public Sub New() InitializeComponent() Dim InfoLicencia As New LicenseInformation If InfoLicencia.IsTrial Then MessageBox.Show("Ejecutando la aplicación en modo DEMO") Else MessageBox.Show("Ejecutando la aplicación en modo COMPLETO") End If End Sub End Class
Nota: Este ejemplo de concepto no es funcional en el emulador, ya que la propiedad IsTrial siempre devuelve False, ya que para que realmente funcione la aplicación debe estar firmado por el marketplace.
Esto esta bien para una aplicación de ejemplo, pero si queremos hacer una buena implementación deberemos hacer que, por lo menos para pruebas, nos pregunte si queremos entrar en modo demo o completo. Para ello vamos a aprovechar el evento Launching y Activated del fichero App.xaml.vb para comprobar en que modo queremos iniciar la aplicación.
' Código para ejecutar cuando la aplicación se inicia (p.ej. a partir de Inicio) ' Este código no se ejecutará cuando la aplicación se reactive Private Sub Application_Launching(ByVal sender As Object, ByVal e As LaunchingEventArgs) Comprobar_ModoInicio() End Sub ' Código para ejecutar cuando la aplicación se activa (se trae a primer plano) ' Este código no se ejecutará cuando la aplicación se inicie por primera vez Private Sub Application_Activated(ByVal sender As Object, ByVal e As ActivatedEventArgs) Comprobar_ModoInicio() End Sub
En la rutina de Comprobar_ModoInicio vamos a preguntar por el modo de inicio de nuestra aplicación y vamos a guardarlo en una variable para futuras consultas, esto también vamos a colocarlo en el fichero App.xaml.vb.
Public _EsDemo As Boolean Sub Comprobar_ModoInicio() Dim InfoLicencia As New LicenseInformation #If DEBUG Then ' En modo de depuración, preguntamos como deseamos arrancar la aplicación ' Si pulsa sobre el botón de Ok entramos en modo demo y sino en modo completo If MessageBox.Show("Pulse Aceptar para entrar en modo DEMO o Cancelar para entrar en modo COMPLETO", "Modo Inicio", MessageBoxButton.OKCancel) = MessageBoxResult.OK Then _EsDemo = True Else _EsDemo = False End If #Else ' Si no estamos en depuración obtenemos el valor del certificado de la aplicación _EsDemo = InfoLicencia.IsTrial #End If End Sub
Ahora ya podemos desde cualquier punto de nuestra aplicación comprobar el modo de inicio y limitar por tiempo, número de arranques o cualquier otro método que queramos implementar.
Quedando nuestro primer ejemplo de la siguiente manera.
Partial Public Class MainPage Inherits PhoneApplicationPage ' Constructor Public Sub New() InitializeComponent() If TryCast(Application.Current, App)._EsDemo Then MessageBox.Show("Ejecutando la aplicación en modo DEMO") Else MessageBox.Show("Ejecutando la aplicación en modo COMPLETO") End If End Sub End Class
Con este pequeño ejemplo podemos utilizar el emulador para probar como se comporta nuestra aplicación de un modo u otro.
Podéis descargar el proyecto de ejemplo desde http://descarga.e-mision.net/test_trial.zip