Crie uma versão de avaliação do seu aplicativo (HTML)

[ Este artigo destina-se aos desenvolvedores do Windows 8.x e do Windows Phone 8.x que escrevem aplicativos do Windows Runtime. Se você estiver desenvolvendo para o Windows 10, consulte documentação mais recente]

Se os clientes puderem usar o aplicativo gratuitamente durante um período de avaliação, você poderá projetar seu aplicativo para excluir ou limitar alguns dos recursos nesse período. Poderá também habilitar recursos, como banners ou marcas d'água, os quais serão mostrados apenas durante a avaliação, antes de o cliente comprar o aplicativo. Vejamos como podemos adicionar isso ao seu aplicativo.

Se você deseja trabalhar com versões de avaliação de aplicativos e outros dos principais recursos do Windows 8, baixe os laboratórios práticos do Windows 8. Com esses laboratórios, você terá uma introdução modular e passo a passo à criação de um exemplo de aplicativo da Windows Store na linguagem de programação que preferir (JavaScript e HTML ou C# e linguagem XAML).

O que você precisa saber

Tecnologias

Pré-requisitos

  • Um aplicativo do Tempo de Execução do Windows a ser modificado

Instruções

Etapa 1: Escolha os recursos que você deseja habilitar ou desabilitar durante o período de avaliação.

O estado de licença atual do aplicativo é armazenado como propriedades da classe LicenseInformation. Geralmente, você coloca as funções que dependem do estado de licença em um bloco condicional, conforme descrito na próxima etapa. Ao considerar esses recursos, verifique se você pode implementá-los de maneira que funcione em todos os estados de licença.

Decida também como você gostaria de habilitar as alterações na licença do aplicativo durante sua execução. O aplicativo de avaliação pode conter todos os recursos, mas tem faixas de anúncios no aplicativo que a versão paga não tem. O aplicativo de avaliação também pode desabilitar determinados recursos ou exibir mensagens regulares solicitando a compra.

Analise sobre o tipo de aplicativo sendo criado e uma boa estratégia de avaliação ou expiração para ele. Para uma versão de avaliação de um jogo, uma boa estratégia é limitar a quantidade de conteúdo do jogo que um usuário pode jogar. Para uma versão de avaliação de um utilitário, você pode considerar definir uma data de expiração ou limitar os recursos que um possível comprador pode usar.

Nos aplicativos não destinados a jogos, a configuração de uma data de expiração funciona bem, pois os usuários podem desenvolver um bom entendimento do aplicativo como um todo. Veja aqui alguns cenários comuns de expiração e as opções para lidar com eles.

  • A licença de avaliação expira enquanto o aplicativo está em execução

    Se a avaliação expirar enquanto o aplicativo estiver em execução, o aplicativo poderá:

    • Não fazer nada.
    • Exibir uma mensagem para o cliente.
    • Fechar.
    • Solicitar que o cliente faça a compra.

    A prática recomendada é exibir uma mensagem com uma solicitação de compra e, se o cliente comprar o aplicativo, todos os recursos continuarão habilitados. Se o usuário não se decidir pela compra, feche o aplicativo ou lembre periodicamente o usuário para comprá-lo.

  • A licença de avaliação expira antes de o aplicativo ser iniciado

    Se a avaliação expirar antes de o usuário iniciar o aplicativo, ele não será iniciado. Em vez disso, os usuários veem uma caixa de diálogo que lhes dá a opção de comprar o aplicativo na loja.

  • O cliente compra o aplicativo enquanto ele está em execução

    Se o cliente comprar o aplicativo enquanto ele estiver em execução, há algumas ações que o aplicativo poderá executar.

    • Não fazer nada e manter o cliente no modo de avaliação enquanto o aplicativo não for reiniciado.
    • Agradeça-os pela compra ou exiba uma mensagem.
    • Habilitar silenciosamente os recursos disponibilizados pela licença completa (ou desabilitar os avisos de somente avaliação).

Se quiser detectar a mudança de licença e tomar alguma providência no seu aplicativo, adicione um manipulador de eventos para isso, conforme descrito na próxima etapa.

Etapa 2: Inicializar as informações de licença

Quando o aplicativo estiver sendo inicializado, obtenha o objeto LicenseInformation para o aplicativo, conforme mostrado neste exemplo. Pressupomos que a licenseInformation é uma variável ou campo global do tipo LicenseInformation.

Inicialize o CurrentApp ou CurrentAppSimulator para acessar as informações de licença do aplicativo.


function initializeLicense()
{
    // (some app initialization functions)

        // Initialize the license info for use in the app that is uploaded to the Store.
        // uncomment for release
        // currentApp = Windows.ApplicationModel.Store.CurrentApp;

        // Initialize the license info for testing.
        // comment the next line for release
        currentApp = Windows.ApplicationModel.Store.CurrentAppSimulator;

        // get the license info
        licenseInformation = currentApp.licenseInformation;

    // (other app initialization functions)
}

Adicione um manipulador de eventos para receber as notificações quando a licença é alterada durante a execução do aplicativo. A licença do aplicativo pode ser alterada quando o período de avaliação expira ou o cliente compra o aplicativo por meio de uma Loja, por exemplo.


function initializeLicense()
{
    // some app initialization functions

        // Initialize the license info for use in the app that is uploaded to the Store.
        // uncomment for release
        // currentApp = Windows.ApplicationModel.Store.CurrentApp;

        // Initialize the license info for testing.
        // comment the next line for release
        currentApp = Windows.ApplicationModel.Store.CurrentAppSimulator;

        // Get the license info
        licenseInformation = currentApp.licenseInformation;

        // Register for the license state change event.
        licenseInformation.addEventListener("licensechanged", reloadLicense);

    // other app initializations function
}

function reloadLicense()
{
    // (code is in next steps)
}

Etapa 3: Codificar recursos em blocos condicionais

Quando o evento de alteração de licença é gerado, o aplicativo deve chamar a API de Licença para determinar se o status de avaliação foi alterado. O código nesta etapa mostra como estruturar o manipulador desse evento. Nesse ponto, se um usuário comprou o aplicativo, é uma prática recomendada fornecer comentários para o usuário informando que o status de licença foi alterado. Você pode precisar solicitar que o usuário reinicie o aplicativo, caso este tenha sido codificado assim. Mas faça essa transição de maneira mais contínua e suave possível.

Este exemplo mostra como avaliar o status de licença do aplicativo para que você possa habilitar ou desabilitar um recurso do aplicativo de forma adequada.


function 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.
    }
}

Etapa 4: Obter uma data de expiração da avaliação do aplicativo (somente para Windows)

Inclua o código para determinar a data de expiração do aplicativo.

O código neste exemplo define uma função para obter a data de expiração da licença de avaliação do aplicativo. Se a licença ainda for válida, exiba a data de expiração com o número de dias que restam até a expiração da avaliação.

function displayTrialVersionExpirationTime()
{
    if (licenseInformation.isActive)
    {
        if (licenseInformation.isTrial)
        {
            var longDateFormat = Windows.Globalization.DateTimeFormatting.DateTimeFormatter("longdate");

            // Display the expiration date using the DateTimeFormatter. 
            // For example, longDateFormat.format(licenseInformation.expirationDate) 

            var daysRemaining = (licenseInformation.expirationDate - new Date()) / 86400000;

            // Let the user know the number of days remaining before the feature expires.
        }
        else
        {
            // ...
        }
    }
    else
    {
       // ...
    }
}

Etapa 5: Testar os recursos usando chamadas simuladas para a API de Licença

Agora, teste o aplicativo usando chamadas simuladas para o servidor de licenças No JavaScript, C#, Visual Basic ou Visual C++, substitua as referências ao CurrentApp pelo CurrentAppSimulator no código de inicialização do aplicativo.

O CurrentAppSimulator obtém as informações específicas do teste de um arquivo XML denominado "WindowsStoreProxy.xml", localizado em %userprofile%\AppData\local\packages\<package name>\LocalState\Microsoft\Windows Store\ApiData. Se esse caminho e esse arquivo não existirem, você deverá criá-los ou fornecê-los durante a instalação ou no tempo de execução. Se tentar acessar a propriedade CurrentAppSimulator.LicenseInformation sem o WindowsStoreProxy.xml presente nesse local específico, um erro será apresentado.

Este exemplo ilustra como você pode adicionar código ao aplicativo para testá-lo sob os estados diferentes de licença.

function appInit
{
    // some app initialization functions

        // Initialize the license info for use in the app that is uploaded to the Store.
        // uncomment for release
        // currentApp = Windows.ApplicationModel.Store.CurrentApp;

        // Initialize the license info for testing.
        // comment the next line for release
        currentApp = Windows.ApplicationModel.Store.CurrentAppSimulator;

        // Get the license info
        licenseInformation = currentApp.licenseInformation;

    // other app initialization functions
}

Você pode editar o WindowsStoreProxy.xml para alterar as datas de expiração simuladas do aplicativo e seus recursos. Teste todas as configurações possíveis de expiração e licença para verificar se tudo funciona conforme o esperado.

Etapa 6: Substituir os métodos da API de Licença simulada pela API real

Depois de testar o aplicativo com o servidor de licenças simuladas e antes de enviá-lo para uma Loja para certificação, substitua CurrentAppSimulator por CurrentApp, conforme apresentado na amostra de código a seguir.

Importante  O aplicativo deve usar o objeto CurrentApp quando você enviá-lo para uma Loja, caso contrário, haverá falha na certificação.

 

function appInit
{
    // (some app initialization functions)

        // Initialize the license info for use in the app that is uploaded to the Store.
        // uncomment for release
        currentApp = Windows.ApplicationModel.Store.CurrentApp;

        // Initialize the license info for testing.
        // comment the next line for release
        //   currentApp = Windows.ApplicationModel.Store.CurrentAppSimulator;

        // Get the license info
        licenseInformation = currentApp.licenseInformation;

    // (other app initialization functions)
}

Etapa 7: Descrever para os clientes como funciona a versão de avaliação gratuita

Lembre-se de explicar como o aplicativo se comportará durante e após o período de avaliação gratuita, assim, os clientes não serão surpreendidos pelo comportamento do aplicativo.

Para saber mais sobre a descrição do aplicativo, veja Descrição do aplicativo.

Tópicos relacionados

Aplicativo de avaliação e exemplo de compra no aplicativo

CurrentApp

CurrentAppSimulator