Partilhar 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á 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ó permite que eles funcionem quando uma licença completa tiver sido comprada. Você também pode habilitar recursos, como banners ou marcas d'água, que são mostrados apenas durante a avaliação, 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 em vez disso. O namespace Windows.Services.Store suporta os tipos de complementos mais recentes, como complementos e assinaturas de consumíveis gerenciados pela Loja, e foi projetado para ser compatível com futuros tipos de produtos e recursos suportados pelo Partner Center e pela Loja. O namespace Windows.Services.Store foi introduzido no Windows 10, versão 1607, e só pode ser usado em projetos destinados a 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 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 da licença em um bloco condicional, como descrevemos na próxima etapa. Ao considerar esses recursos, certifique-se de que você possa implementá-los de uma forma 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 ter todos os recursos, mas tem banners de anúncios no aplicativo onde a versão paga não tem. Em alternativa, a aplicação de avaliação pode desativar certas funcionalidades ou apresentar mensagens regulares solicitando ao utilizador que a compre.

Pense no tipo de aplicativo que você está criando e qual é uma boa estratégia de avaliação 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 validade 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 validade funciona bem, porque os usuários podem desenvolver um bom entendimento do aplicativo completo. Aqui estão alguns cenários de expiração comuns e suas opções para lidar com eles.

  • licença de avaliação expira enquanto o aplicativo está sendo executado

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

    • Não faça nada.
    • Exiba uma mensagem para o 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.

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

    Se a avaliação expirar antes de o utilizador iniciar a aplicação, a aplicação não será iniciada. 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á sendo executado

    Se o cliente comprar seu aplicativo enquanto ele está 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 aos clientes por comprarem ou exiba uma mensagem.
    • Habilite silenciosamente os recursos que estão disponíveis com uma licença completa (ou desative os avisos somente de avaliação).

Se você quiser detetar 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 submeteres a versão de lançamento da tua aplicação na Store, deves substituir todas as referências de CurrentAppSimulator no teu 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: Codifique 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 da licença de um aplicativo para que você possa habilitar ou desabilitar um recurso do seu aplicativo de acordo.

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 da aplicação.

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é o teste expirar.

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 informações de licenciamento específicas do teste de um arquivo XML chamado WindowsStoreProxy.xml, localizado em %UserProfile%\AppData\local\packages\<nome do pacote>\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 suas possíveis configurações de expiração e licenciamento para garantir que tudo funcione como pretendido. Para obter mais informações, consulte Usando o arquivo WindowsStoreProxy.xml com CurrentAppSimulator.

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

Etapa 6: Substitua 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 a uma Loja para certificação, substitua CurrentAppSimulator por CurrentApp, conforme mostrado no exemplo de código a seguir.

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 avaliação gratuita para que seus clientes não sejam surpreendidos pelo comportamento do aplicativo.

Para saber mais sobre como descrever seu aplicativo, veja Criar descrições de aplicativos.