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, poderá incentivá-los a 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, em seguida, certifique-se de que seu aplicativo só permita que eles funcionem quando uma licença completa for comprada. Você também pode habilitar recursos, como faixas ou marcas d'água, que são mostrados apenas durante a avaliação, antes que um cliente compre o 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 consumíveis gerenciados pela Loja e assinaturas, e foi projetado para ser compatível com tipos futuros de produtos e recursos compatíveis com o Partner Center e a Loja. O namespace Windows.Services.Store foi introduzido no Windows 10, versão 1607 e só pode ser usado em projetos direcionados ao 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: escolha os recursos que deseja ativar ou desativar durante o período de avaliação

O estado atual da licença do seu aplicativo é armazenado como propriedades da classe LicenseInformation . Normalmente, você coloca as funções que dependem do estado da licença em um bloco condicional, conforme descrito 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 você 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, mas ter banners de anúncios no aplicativo onde a versão paga não. Ou seu aplicativo de avaliação pode desabilitar determinados recursos ou exibir mensagens regulares solicitando que o usuário o compre.

Pense no tipo de aplicativo que você está criando e qual é uma boa estratégia de teste ou expiração para ele. Para uma versão de teste 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 comprador em potencial pode usar.

Para a maioria dos aplicativos que não são de jogos, definir uma data de expiração funciona bem, porque os usuários podem desenvolver uma boa compreensão do aplicativo completo. Aqui estão alguns cenários de expiração comuns e suas 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, ele poderá:

    • Não fazer nada.
    • Exiba uma mensagem para seu cliente.
    • Fechar.
    • Solicite que seu cliente compre o aplicativo.

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

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

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

  • O 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 realizar.

    • Não faça nada e deixe-os continuar no modo de avaliação até que reiniciem o aplicativo.
    • Agradeça a eles por comprar ou exiba uma mensagem.
    • Habilite silenciosamente os recursos disponíveis com uma licença completa (ou desabilite os avisos somente de avaliação).

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 da licença

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

Por enquanto, você obterá informações de licença simuladas usando CurrentAppSimulator em vez de CurrentApp. Antes de enviar a versão de lançamento do seu aplicativo para a Loja, 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 pode mudar se o período de avaliação expirar ou se 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 feedback 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 codificou. Mas torne essa transição o mais perfeita e indolor possível.

Este exemplo mostra como avaliar o status de 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 avaliaçã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 restantes até que a avaliação 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. O CurrentAppSimulator obtém 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 expiração simuladas para seu aplicativo e 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 Usando 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, receberá um erro.

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

Depois de testar seu aplicativo com o servidor de licenças simulado e antes de enviar seu aplicativo para uma Loja para certificação, substitua CurrentAppSimulator por 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: descreva 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 teste gratuito para que seus clientes não se surpreendam com o comportamento do seu aplicativo.

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