Archivo de la etiqueta: Windows Store

Saber si una aplicación de Windows Store es de prueba (trial) o comprada

 

Pues eso… cuando publicas una aplicación "de pago" en Windows Store puedes indicar un periodo de prueba (trial). Saber si la aplicación es aún de prueba o no te permite poder cambiar algunas de las opciones de tu aplicación, si es que realmente quieres hacer esa distinción, si no quieres hacer ninguna distinción puedes dejar de leer esto jejeje.

La forma más simple es hacer una comprobación del valor devuelto por la propiedad IsTrial de la propiedad LicenseInformation que está definida en la clase CurrentApp:
CurrentApp.LicenseInformation.IsTrial

Nota:
Según indica la ayuda de CurrentApp, para poder usarla necesitas tener una cuenta de desarrollador de Windows Store. Si no es así, puedes usar la clase CurrentAppSimulator.

La forma más práctica de usar el valor de esa propiedad es bien almacenándola en una variable o bien usarla para comprobar si, por ejemplo, se deben mostrar ciertas opciones o controles en nuestra app. Por supuesto, si vas a hacer varias comprobaciones en sitios diferentes de tu aplicación, lo mejor es que utilices una variable local (a nivel de la página).

Además, también tienes que tener en cuenta de que mientras tu aplicación se está ejecutando es posible que el usuario la haya comprado, por tanto es interesante por no decir conveniente que tu aplicación se entere de si la app ha cambiado de trial a de pago. Por suerte existe un evento en la clase CurrentApp que te permite saber si esto ocurre. Ese evento es: LicenseChanged.

El evento LicenseChanged se producirá cuando cambie el tipo de licencia de tu aplicación, y en ese método de evento es donde puedes re-asignar el valor de la variable esa que te comentaba antes (la de saber si es trial o no).

 

blog isTrial
Figura 1. Un ejemplo de uso en Visual Basic de IsTrial…

 

Pues nada, esto es todo… solo decirte (y recomendarte) que le eches un vistazo a la ayuda sobre la clase CurrentApp porque ahí tienes más cosillas interesantes que puedes hacer con tu aplicación, pero siempre relacionadas con la Tienda de Windows y la compra de la app, incluso desde dentro de la propia aplicación (in-app purchase).

Este enlace te llevará a un ejemplo del Dev Center de Microsoft con ejemplos para esto que te he comentado y además de realizar compras desde la aplicación (in-app purchase).
Si tu lenguaje preferido es Visual Basic .NET, decirte que no hay código de ejemplo para VB, solo para C#, JavaScript y C++, pero bueno…
Trial app and in-app purchase sample.

 

Esto es válido para las aplicaciones de la Tienda de Windows de Windows 8 y superior; además de las aplicaciones para Windows Phone 8 y superior.

Espero que te sea de utilidad.

 

Nos vemos.
Guillermo

Cómo usar el FileOpenPicker para seleccionar ficheros en las apps de Windows Store

 

Pues eso… ahora le toca el turno al FileOpenPicker el "seleccionador" de ficheros en las aplicaciones de la Tienda de Windows.

En las aplicaciones para la Tienda de Windows (Windows Store) esta es la única forma (que yo conozco) de acceder a una carpeta local (o de la red o de un disco extraíble o de un sistema de almacenamiento como Skydrive) y seleccionar un fichero.

Aunque antes hay que indicarle a la aplicación de que queremos acceder a esos sitios, para ello tendremos que abrir el fichero de manifiesto de la aplicación (Package.appxmanifest) y en la ficha Capabilities (ver figura 1) indicar que queremos utilizar el Private Networks y Removable Storage (por si queremos acceder a un disco externo/conectado por USB).

 


Figura 1. Indicar las "Capabilities" de la aplicación

 

Lo siguiente que tenemos que hacer es indicar en la ficha Declarations que queremos usar el File Open Picker.

 


Figura 2. En Declarations indicamos que queremos usar el File Open Picker

 

Tal como vemos en la figura 2 tenemos que indicar al menos un tipo de fichero (Supported file type) aunque no tiene porqué ser el mismo tipo que vamos a usar, en este ejemplo he indicado ".xml" y casualmente voy a buscar ese tipo de fichero, pero como veremos en el código, también voy a indicar que me muestre los que tengan la extensión .txt (además de los .xml).

La forma de usar ese control es desde dentro de un método asíncrono (async) ya que las llamadas a los métodos para acceder al fichero son llamadas asíncronas.

En el siguiente código vemos lo que necesitamos para usar esa clase. Dependiendo del tipo de ficheros a los que queramos acceder así lo indicaremos en la colección FileTypeFilter, en este ejemplo he añadido dos tipos: .xml y .txt, pero si quisiéramos acceder a todos los tipos, habría que indicar el asterisco (*), en el ejemplo el asterisco está comentado, pero si quieres hacer pruebas, quita el comentario.

Este es el código de Visual Basic, el de C# está más abajo.

Dim openPicker As New FileOpenPicker()
openPicker.FileTypeFilter.Add(".xml")
openPicker.FileTypeFilter.Add(".txt")
'openPicker.FileTypeFilter.Add("*")
openPicker.SuggestedStartLocation = PickerLocationId.DocumentsLibrary
openPicker.ViewMode = PickerViewMode.List
Dim cfgFile As StorageFile = Await openPicker.PickSingleFileAsync()

If cfgFile Is Nothing Then Exit Sub

Dim sr = New StreamReader(Await cfgFile.OpenStreamForReadAsync)

 

Utilizando ese código podremos ver algo como la captura de la figura 3.

Figura 3. El FileOpenPicker en acción

 

Y esto es prácticamente todo… aquí te dejo el código de ejemplo de C# para que no te quejes si prefieres los puntos y comas 😉

FileOpenPicker openPicker = new FileOpenPicker();
openPicker.FileTypeFilter.Add(".xml");
openPicker.FileTypeFilter.Add("*");
openPicker.SuggestedStartLocation = PickerLocationId.DocumentsLibrary;
openPicker.ViewMode = PickerViewMode.List;
StorageFile cfgFile = await openPicker.PickSingleFileAsync();

if (cfgFile == null) return;

var sr = new StreamReader(await cfgFile.OpenStreamForReadAsync());

 

Comentarte que la clase FileOpenPicker está definida en Windows.Storage.Pickers y la clase StorageFile está definida en Windows.Storage.

Y esto ya si que es todo…

Nos vemos.

Guillermo

Dónde poner el ScrollViewer para poder hacer scroll (app para Windows Store)

 

Pues eso… que siempre me lío y no me aclaro nunca dónde tengo que poner el "dichoso" control ScrollViewer para poder hacer scroll al contenido… ahora que lo escribo tiene su lógica… es decir, si hago la pregunta: ¿dónde lo pongo para poder hacer scroll al contenido? La respuesta es: el ScrollViewer fuera, y dentro del control pondremos lo que haya que hacer scroll… si es que… :-/

Así que, ya sabes… defines el control ScrollViewer y dentro del control pones la caja de texto o lo que sea, y a eso es a lo que podrás hacer scroll (desplazamiento).

Por ejemplo, en el siguiente código XAML tenemos un ScrollViewer que está dentro de un Grid y que contiene una caja de texto (TextBlock) y al contenido de esa caja de textos es a lo que quiero poder hacer scroll. Ese TextBlock está a su vez dentro del un StackPanel, con idea de que ahí puedas meter más cosas y todas esas cosas estarán controladas por el control  de scroll. En este código de ejemplo también hay un botón que estará debajo de la caja de texto.

<ScrollViewer ScrollViewer.VerticalScrollBarVisibility="Visible">
    <StackPanel Margin="10" 
                HorizontalAlignment="Center" 
                VerticalAlignment="Center">
        <TextBlock x:Name="txtDatos" TextWrapping="Wrap" 
                   FontSize="16" FontWeight="SemiBold"
                   Text="El contenido del fichero"
                   MinWidth="800" MinHeight="600" />
        <Button Content="Leer un fichero" Margin="0,10,0,0"
                Click="Button_Click" />
    </StackPanel>
</ScrollViewer>

En esta captura puedes ver (por decir algo) cómo queda esto al funcionar en el emulador:

Y ya está. Esto es todo amigos…

 

Nos vemos.

Guillermo