Compartilhar via


Excluir ou limitar recursos em uma versão de avaliação

Se você permitir que os clientes usem seu aplicativo gratuitamente durante um período de avaliação, você poderá atrair seus clientes para atualizar para a versão completa do seu aplicativo excluindo ou limitando alguns recursos durante o período de avaliação. Determine quais recursos devem ser limitados antes de começar a codificar e verifique se seu aplicativo só permite que eles funcionem quando uma licença completa foi comprada. Você também pode habilitar funcionalidades, como faixas ou marcas d'água, que são mostradas somente durante o período de teste, antes que um cliente compre seu aplicativo.

Importante

Este artigo demonstra como usar membros do namespace Windows.ApplicationModel.Store para implementar a funcionalidade de avaliação. Esse namespace não está mais sendo atualizado com novos recursos e recomendamos que você use o namespace Windows.Services.Store. O namespace Windows.Services.Store dá suporte aos tipos de complemento mais recentes, como complementos e assinaturas consumíveis gerenciados pela Store, e foi projetado para ser compatível com tipos futuros de produtos e recursos compatíveis com o Partner Center e a Store. O namespace Windows.Services.Store foi introduzido no Windows 10, versão 1607, e só pode ser usado em projetos que têm como alvo o Windows 10 Anniversary Edition (10.0; Build 14393) ou uma versão posterior no Visual Studio. Para obter mais informações sobre como implementar a funcionalidade de avaliação usando o namespace Windows.Services.Store, consulte este artigo.

Pré-requisitos

Um aplicativo do Windows no qual adicionar recursos para os clientes comprarem.

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

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

Além disso, decida como deseja lidar com as alterações na licença do aplicativo enquanto o aplicativo está em execução. Seu aplicativo de avaliação pode ser completo em recursos, mas exibe banners de anúncios no aplicativo, enquanto a versão paga não os possui. Ou, seu aplicativo de avaliação pode desabilitar determinados recursos ou exibir mensagens regulares pedindo ao usuário para comprá-lo.

Pense no tipo de aplicativo que você está desenvolvendo e qual é uma boa estratégia de teste ou prazo de expiração para ele. Para uma versão de avaliação de um jogo, uma boa estratégia é limitar a quantidade de conteúdo de 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 validade ou limitar os recursos que um potencial comprador pode usar.

Para a maioria dos aplicativos que não são de jogos, a definição de uma data de validade funciona bem, pois os usuários podem desenvolver uma boa compreensão do aplicativo completo. Aqui estão alguns cenários comuns de expiração e suas opções para lidar com eles.

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

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

    • Não faça nada.
    • Exiba uma mensagem para o cliente.
    • Fechar.
    • Solicite que o cliente compre o aplicativo.

    A melhor prática é exibir uma mensagem com um prompt para comprar o aplicativo e, se o cliente comprar, continuar com todos os recursos habilitados. Se o usuário decidir não comprar o aplicativo, feche-o ou lembre-o de comprar o aplicativo em intervalos regulares.

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

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

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

    Se o cliente comprar seu aplicativo enquanto ele estiver em execução, aqui estão algumas ações que seu aplicativo pode executar.

    • Não faça nada e deixe que eles continuem no modo de avaliação até reiniciarem o aplicativo.
    • Agradeça pela compra ou exiba uma mensagem.
    • Habilite silenciosamente os recursos que estão disponíveis com uma licença completa (ou desative os avisos apenas para testes).

Se você quiser detectar a alteração de licença e executar alguma ação em seu aplicativo, deverá adicionar um manipulador de eventos para isso, conforme descrito na próxima etapa.

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

Quando seu aplicativo estiver inicializando, obtenha o objeto LicenseInformation para seu aplicativo, conforme mostrado neste exemplo. Presumimos que licenseInformation é uma variável global ou um campo do tipo LicenseInformation.

Por enquanto, você obterá informações simuladas de licença usando CurrentAppSimulator em vez de CurrentApp. Antes de enviar a versão de lançamento do aplicativo para o Store, você deve substituir todas as referências CurrentAppSimulator em seu 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...
}

Em seguida, adicione um manipulador de eventos para receber notificações quando a licença for alterada enquanto o aplicativo estiver em execução. A licença do aplicativo poderá ser alterada se o período de avaliação expirar ou o cliente comprar o aplicativo por meio de uma Loja, por exemplo.

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(); 
}

Etapa 3: Codificar os recursos em blocos condicionais

Quando o evento de alteração de licença é gerado, seu aplicativo deve chamar a API de Licença para determinar se o status da avaliação foi alterado. O código nesta etapa mostra como estruturar seu manipulador para esse evento. Neste ponto, se um usuário comprou o aplicativo, é uma boa prática fornecer comentários ao usuário de que o status de licenciamento foi alterado. Talvez seja necessário pedir ao usuário para reiniciar o aplicativo se for assim que você o codiou. Mas faça essa transição o mais perfeita e indolor possível.

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

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

Etapa 4: Obter a data de expiração da avaliação de um aplicativo

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

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

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
    {
        // ...
    }
}

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

Agora, teste seu aplicativo usando dados simulados. CurrentAppSimulator obtém as informações de licenciamento específicas do teste de um arquivo XML chamado WindowsStoreProxy.xml, localizado em %UserProfile%\AppData\local\packages\<package name>\LocalState\Microsoft\Windows Store\ApiData. Você pode editar WindowsStoreProxy.xml para alterar as datas de validade simuladas para seu aplicativo e para seus recursos. Teste todas as configurações possíveis de expiração e licenciamento para garantir que tudo funcione conforme o esperado. Para obter mais informações, consulte Usar o arquivo WindowsStoreProxy.xml com CurrentAppSimulator.

Se esse caminho e arquivo não existirem, você deverá criá-los durante a instalação ou em tempo de execução. Se você tentar acessar a propriedade CurrentAppSimulator.LicenseInformation sem WindowsStoreProxy.xml presente nesse local específico, você receberá um erro.

Etapa 6: substituir os métodos de API de Licença simulados pela API real

Depois de testar seu aplicativo com o servidor de licença simulado e antes de enviar seu aplicativo para uma Loja para certificação, substitua CurrentAppSimulator pelo CurrentApp, conforme mostrado no próximo exemplo de código.

Importante

Seu aplicativo deve usar o objeto CurrentApp quando você enviar seu aplicativo para uma Loja ou ele falhará na certificação.

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

Etapa 7: Descrever como a avaliação gratuita funciona para seus clientes

Certifique-se de explicar como seu aplicativo se comportará durante e após o período de avaliação gratuito para que seus clientes não se surpreendam com o comportamento do aplicativo.

Para obter mais informações sobre como descrever seu aplicativo, consulte Criar descrições de aplicativo.