Compartilhar via


Implementar uma versão de avaliação do aplicativo

Se você configurar seu aplicativo como uma avaliação gratuita no Partner Center para que os clientes possam usar seu aplicativo gratuitamente durante um período de avaliação, poderá incentivar seus clientes 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.

Este artigo mostra como usar membros da classe StoreContext no namespace Windows.Services.Store para determinar se o usuário tem uma licença de avaliação para seu aplicativo e ser notificado se o estado da licença for alterado enquanto seu aplicativo estiver em execução.

Observação

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. Se o aplicativo for direcionado a uma versão anterior do Windows 10, você deverá usar o namespace Windows.ApplicationModel.Store em vez do namespace Windows.Services.Store. Para obter mais informações, consulte este artigo.

Diretrizes para implementar uma versão de avaliação

O estado atual da licença do seu aplicativo é armazenado como propriedades da classe StoreAppLicense . 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).

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.

Pré-requisitos

Este exemplo tem os seguintes pré-requisitos:

  • Um projeto do Visual Studio para um aplicativo da Plataforma Universal do Windows (UWP) direcionado ao Windows 10 Anniversary Edition (10.0; Build 14393) ou uma versão posterior.
  • Você criou um aplicativo no Partner Center que está configurado como uma avaliação gratuita sem limite de tempo e esse aplicativo é publicado na Loja. Opcionalmente, você pode configurar o aplicativo para que ele não seja detectável na Store enquanto você o testa. Para obter mais informações, confira nossas diretrizes de teste.

O código neste exemplo pressupõe:

  • O código é executado no contexto de uma Página que contém um ProgressRing denominado workingProgressRing e um TextBlock denominado textBlock. Esses objetos são usados para indicar que uma operação assíncrona está ocorrendo e exibir mensagens de saída, respectivamente.
  • O arquivo de código tem uma instrução using para o namespace Windows.Services.Store.
  • O app seja um app de usuário único executado somente no contexto do usuário que o iniciou. Para obter mais informações, confira Compras e avaliações no aplicativo.

Observação

Se você tiver um aplicativo de área de trabalho que use a Ponte de Desktop, talvez seja necessário adicionar mais um código não mostrado neste exemplo para configurar o objeto StoreContext. Para obter mais informações, confira Como usar a classe StoreContext em um aplicativo da área de trabalho que usa a Ponte de Desktop.

Exemplo de código

Quando seu aplicativo estiver inicializando, obtenha o objeto StoreAppLicense para seu aplicativo e manipule o evento OfflineLicensesChanged para receber notificações quando a licença for alterada enquanto o aplicativo estiver em execução. Por exemplo, a licença do aplicativo pode ser alterada se o período de avaliação expirar ou o cliente comprar o aplicativo por meio de uma Loja. Quando a licença for alterada, obtenha a nova licença e ative ou desative um recurso do seu aplicativo de acordo.

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.

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 obter um aplicativo de exemplo completo, confira o Exemplo da Store.