Compartir a través de


Implementación de una versión de prueba de una aplicación

Si configura la aplicación como una evaluación gratuita en el Centro de partners para que los clientes puedan usar la aplicación de forma gratuita durante un período de prueba, puede invocar a los clientes para actualizar a la versión completa de la aplicación excluyendo o limitando algunas características durante el período de prueba. Determine qué características deben limitarse antes de empezar a codificar y asegúrese de que la aplicación solo les permite trabajar cuando se haya adquirido una licencia completa. También puedes habilitar características, como banners o marcas de agua, que solo se muestran durante la prueba antes de que un cliente compre la aplicación.

En este artículo se muestra cómo usar miembros de la clase StoreContext en el espacio de nombres Windows.Services.Store para determinar si el usuario tiene una licencia de prueba para la aplicación y recibir una notificación si el estado de la licencia cambia mientras se ejecuta la aplicación.

Nota:

El espacio de nombres Windows.Services.Store se introdujo en Windows 10, versión 1607, y solo se puede usar en proyectos que tienen como destino Windows 10 Anniversary Edition (10.0; Compilación 14393) o una versión posterior en Visual Studio. Si la aplicación tiene como destino una versión anterior de Windows 10, debe usar el espacio de nombres Windows.ApplicationModel.Store en lugar del espacio de nombres Windows.Services.Store. Para obtener más información, consulta este artículo.

Directrices para implementar una versión de prueba

El estado de licencia actual de la aplicación se almacena como propiedades de la clase StoreAppLicense . Normalmente, se colocan las funciones que dependen del estado de licencia en un bloque condicional, como se describe en el paso siguiente. Al considerar estas características, asegúrese de que puede implementarlas de forma que funcione en todos los estados de licencia.

Además, decida cómo desea controlar los cambios en la licencia de la aplicación mientras se ejecuta la aplicación. La aplicación de prueba puede ser completa, pero tiene banners de anuncios en la aplicación en los que la versión de pago no lo hace. O bien, la aplicación de prueba puede deshabilitar determinadas características o mostrar mensajes normales que le pidan al usuario que lo compre.

Piense en el tipo de aplicación que está realizando y en qué consiste una buena estrategia de prueba o expiración. Para una versión de prueba de un juego, una buena estrategia es limitar la cantidad de contenido del juego que un usuario puede jugar. Para una versión de prueba de una utilidad, puede considerar la posibilidad de establecer una fecha de expiración o limitar las características que un posible comprador puede usar.

Para la mayoría de las aplicaciones que no son de juegos, establecer una fecha de expiración funciona bien, ya que los usuarios pueden desarrollar una buena comprensión de la aplicación completa. Estos son algunos escenarios de expiración comunes y sus opciones para controlarlos.

  • La licencia de prueba expira mientras se ejecuta la aplicación

    Si la versión de prueba expira mientras se ejecuta la aplicación, la aplicación puede hacer lo siguiente:

    • No haga nada.
    • Muestra un mensaje al cliente.
    • Casi.
    • Pida al cliente que compre la aplicación.

    El procedimiento recomendado es mostrar un mensaje con un mensaje para comprar la aplicación y, si el cliente lo compra, continúe con todas las características habilitadas. Si el usuario decide no comprar la aplicación, ciérrala o recuérdala para comprarla a intervalos regulares.

  • La licencia de prueba expira antes de iniciar la aplicación

    Si la prueba expira antes de que el usuario inicie la aplicación, la aplicación no se iniciará. En su lugar, los usuarios ven un cuadro de diálogo que les da la opción de comprar la aplicación desde la Tienda.

  • El cliente compra la aplicación mientras se ejecuta

    Si el cliente compra la aplicación mientras se ejecuta, estas son algunas acciones que puede realizar la aplicación.

    • No haga nada y deje que continúen en modo de prueba hasta que reinicien la aplicación.
    • Gracias por comprar o mostrar un mensaje.
    • Habilite silenciosamente las características disponibles con una licencia completa (o deshabilite los avisos de solo prueba).

Asegúrate de explicar cómo se comportará tu aplicación durante y después del período de evaluación gratuita para que los clientes no se sorprenda por el comportamiento de la aplicación. Para obtener más información sobre cómo describir la aplicación, consulta Crear descripciones de la aplicación.

Requisitos previos

Este ejemplo tiene los siguientes requisitos previos:

  • Un proyecto de Visual Studio para una aplicación para la Plataforma universal de Windows (UWP) que tiene como destinoWindows 10 Anniversary Edition (10.0; Compilación 14393) o una versión posterior.
  • Ha creado una aplicación en el Centro de partners que está configurada como una evaluación gratuita sin límite de tiempo y esta aplicación se publica en la Tienda. Opcionalmente, puede configurar la aplicación para que no se pueda encontrar en la Store mientras la prueba. Para obtener más información, consulte nuestra guía para prueba.

En el código de este ejemplo se da por supuesto:

  • El código se ejecuta en el contexto de una Página que contiene un objeto ProgressRing denominado workingProgressRing y un objeto TextBlock denominado textBlock. Estos objetos se usan para indicar que se está produciendo una operación asincrónica y mostrar mensajes de salida, respectivamente.
  • El archivo de código tiene una instrucción using para el espacio de nombres Windows.Services.Store.
  • La aplicación es una de usuario único que se ejecuta solamente en el contexto del usuario que la inició. Para obtener más información, consulte Pruebas y compras desde la aplicación.

Nota:

Si tiene una aplicación de escritorio que usa el Puente de dispositivo de escritorio, es posible que tenga que agregar código adicional que no se muestra en este ejemplo para configurar el objeto StoreContext. Para obtener más información, consulte Usar la clase StoreContext en una aplicación de escritorio que usa el Puente de dispositivo de escritorio.

Ejemplo de código

Cuando la aplicación se inicializa, obtén el objeto StoreAppLicense de la aplicación y controla el evento OfflineLicensesChanged para recibir notificaciones cuando cambia la licencia mientras se ejecuta la aplicación. Por ejemplo, la licencia de la aplicación podría cambiar si expira el período de prueba o el cliente compra la aplicación a través de una Tienda. Cuando cambie la licencia, obtenga la nueva licencia y habilite o deshabilite una característica de la aplicación en consecuencia.

En este momento, si un usuario compró la aplicación, es recomendable proporcionar comentarios al usuario que el estado de licencia ha cambiado. Es posible que deba pedir al usuario que reinicie la aplicación si así es como la ha codificado. Pero haga que esta transición sea lo más fluida y indoloro posible.

private StoreContext context = null;
private StoreAppLicense appLicense = null;

// Call this while your app is initializing.
private async void InitializeLicense()
{
    if (context == null)
    {
        context = StoreContext.GetDefault();
        // If your app is a desktop app that uses the Desktop Bridge, you
        // may need additional code to configure the StoreContext object.
        // For more info, see https://aka.ms/storecontext-for-desktop.
    }

    workingProgressRing.IsActive = true;
    appLicense = await context.GetAppLicenseAsync();
    workingProgressRing.IsActive = false;

    // Register for the licenced changed event.
    context.OfflineLicensesChanged += context_OfflineLicensesChanged;
}

private async void context_OfflineLicensesChanged(StoreContext sender, object args)
{
    // Reload the license.
    workingProgressRing.IsActive = true;
    appLicense = await context.GetAppLicenseAsync();
    workingProgressRing.IsActive = false;

    if (appLicense.IsActive)
    {
        if (appLicense.IsTrial)
        {
            textBlock.Text = $"This is the trial version. Expiration date: {appLicense.ExpirationDate}";

            // Show the features that are available during trial only.
        }
        else
        {
            // Show the features that are available only with a full license.
        }
    }
}

Para obtener una aplicación de ejemplo completa, consulte el ejemplo de Store.