Excluir o limitar las características de una versión de prueba
Si permites que los clientes usen la aplicación de forma gratuita durante un período de prueba, puedes pedir a los clientes que actualicen 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.
Importante
En este artículo se muestra cómo usar miembros del espacio de nombres Windows.ApplicationModel.Store para implementar la funcionalidad de prueba. Este espacio de nombres ya no se actualiza con nuevas características y se recomienda usar el espacio de nombres Windows.Services.Store en su lugar. El espacio de nombres Windows.Services.Store admite los tipos de complementos más recientes, como complementos y suscripciones consumibles administrados por la Tienda, y está diseñado para ser compatible con futuros tipos de productos y características compatibles con el Centro de partners y la Tienda. 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. Para obtener más información sobre cómo implementar la funcionalidad de prueba mediante el espacio de nombres Windows.Services.Store , consulte este artículo.
Requisitos previos
Una aplicación de Windows en la que se van a agregar características para que los clientes compren.
Paso 1: Elegir las características que desea habilitar o deshabilitar durante el período de prueba
El estado de licencia actual de la aplicación se almacena como propiedades de la clase LicenseInformation . 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).
Si quiere detectar el cambio de licencia y realizar alguna acción en la aplicación, debe agregar un controlador de eventos para esto, tal como se describe en el paso siguiente.
Paso 2: Inicializar la información de licencia
Cuando la aplicación se inicialice, obtenga el objeto LicenseInformation de la aplicación, como se muestra en este ejemplo. Se supone que licenseInformation es una variable global o un campo de tipo LicenseInformation.
Por ahora, obtendrá información de licencia simulada mediante CurrentAppSimulator en lugar de CurrentApp. Antes de enviar la versión de lanzamiento de la aplicación a la Tienda, debes reemplazar todas las referencias de CurrentAppSimulator en tu código por CurrentApp.
void InitializeApp()
{
// Some app initialization code...
// Initialize the license info for use in the app that is uploaded to the Store.
// Uncomment the following line in the release version of your app.
// licenseInformation = CurrentApp.LicenseInformation;
// Initialize the license info for testing.
// Comment the following line in the release version of your app.
licenseInformation = CurrentAppSimulator.LicenseInformation;
// Other app initialization code...
}
A continuación, agregue un controlador de eventos para recibir notificaciones cuando cambie la licencia mientras se ejecuta la aplicación. 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, por ejemplo.
void InitializeApp()
{
// Some app initialization code...
// Initialize the license info for use in the app that is uploaded to the Store.
// Uncomment the following line in the release version of your app.
// licenseInformation = CurrentApp.LicenseInformation;
// Initialize the license info for testing.
// Comment the following line in the release version of your app.
licenseInformation = CurrentAppSimulator.LicenseInformation;
// Register for the license state change event.
licenseInformation.LicenseChanged += LicenseInformation_LicenseChanged;
// Other app initialization code...
}
void LicenseInformation_LicenseChanged()
{
// This method is defined later.
ReloadLicense();
}
Paso 3: Codificar las características en bloques condicionales
Cuando se genera el evento de cambio de licencia, la aplicación debe llamar a la API de licencia para determinar si el estado de prueba ha cambiado. El código de este paso muestra cómo estructurar el controlador para este evento. 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.
En este ejemplo se muestra cómo evaluar el estado de licencia de una aplicación para que pueda habilitar o deshabilitar una característica de la aplicación en consecuencia.
void ReloadLicense()
{
if (licenseInformation.IsActive)
{
if (licenseInformation.IsTrial)
{
// Show the features that are available during trial only.
}
else
{
// Show the features that are available only with a full license.
}
}
else
{
// A license is inactive only when there' s an error.
}
}
Paso 4: Obtener la fecha de expiración de la versión de prueba de una aplicación
Incluir código para determinar la fecha de expiración de la prueba de la aplicación.
El código de este ejemplo define una función para obtener la fecha de expiración de la licencia de prueba de la aplicación. Si la licencia sigue siendo válida, muestre la fecha de expiración con el número de días que quedan hasta que expire la versión de prueba.
void DisplayTrialVersionExpirationTime()
{
if (licenseInformation.IsActive)
{
if (licenseInformation.IsTrial)
{
var longDateFormat = new Windows.Globalization.DateTimeFormatting.DateTimeFormatter("longdate");
// Display the expiration date using the DateTimeFormatter.
// For example, longDateFormat.Format(licenseInformation.ExpirationDate)
var daysRemaining = (licenseInformation.ExpirationDate - DateTime.Now).Days;
// Let the user know the number of days remaining before the feature expires
}
else
{
// ...
}
}
else
{
// ...
}
}
Paso 5: Probar las características mediante llamadas simuladas a la API de licencia
Ahora, pruebe la aplicación con datos simulados. CurrentAppSimulator obtiene información de licencia específica de prueba de un archivo XML denominado WindowsStoreProxy.xml, ubicado en %UserProfile%\AppData\local\packages\package name>\<LocalState\Microsoft\Windows Store\ApiData. Puedes editar WindowsStoreProxy.xml para cambiar las fechas de expiración simuladas de la aplicación y para sus características. Pruebe todas las configuraciones de expiración y licencias posibles para asegurarse de que todo funciona según lo previsto. Para obtener más información, consulta Uso del archivo WindowsStoreProxy.xml con CurrentAppSimulator.
Si esta ruta de acceso y archivo no existen, debe crearlas durante la instalación o en tiempo de ejecución. Si intenta acceder a la propiedad CurrentAppSimulator.LicenseInformation sin WindowsStoreProxy.xml presente en esa ubicación específica, obtendrá un error.
Paso 6: Reemplazar los métodos de api de licencia simulados por la API real
Después de probar la aplicación con el servidor de licencias simulado y antes de enviar la aplicación a una Tienda para su certificación, reemplace CurrentAppSimulator por CurrentApp, como se muestra en el ejemplo de código siguiente.
Importante
La aplicación debe usar el objeto CurrentApp al enviar la aplicación a una Tienda o se producirá un error en la certificación.
void InitializeApp()
{
// Some app initialization code...
// Initialize the license info for use in the app that is uploaded to the Store.
// Uncomment the following line in the release version of your app.
licenseInformation = CurrentApp.LicenseInformation;
// Initialize the license info for testing.
// Comment the following line in the release version of your app.
// licenseInformation = CurrentAppSimulator.LicenseInformation;
// Register for the license state change event.
licenseInformation.LicenseChanged += LicenseInformation_LicenseChanged;
// Other app initialization code...
}
Paso 7: Describir cómo funciona la evaluación gratuita para los clientes
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.
Temas relacionados
- Ejemplo de la Tienda (muestra las pruebas y las compras desde la aplicación)
- Establecer los precios y la disponibilidad de las aplicaciones
- CurrentApp
- CurrentAppSimulator