Compartilhar via


Obter informações de licença para apps e complementos

Este artigo demonstra como usar métodos da classe StoreContext no namespace Windows.Services.Store para obter informações de licença para o aplicativo atual e seus complementos. Por exemplo, você pode usar essas informações para determinar se as licenças do aplicativo ou de seus complementos estão ativas ou se são licenças de avaliaçã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.

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 envio de aplicativo no Partner Center e este 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.
  • Se você quiser obter informações de licença para um complemento para o aplicativo, também deverá criar o complemento no Partner Center.

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

Para obter informações de licença para o aplicativo atual, use o método GetAppLicenseAsync . Esse é um método assíncrono que retorna um objeto StoreAppLicense que fornece informações de licença para o aplicativo, incluindo propriedades que indicam se o usuário tem uma licença válida para usar o aplicativo (IsActive) e se a licença é para uma versão de avaliação (IsTrial).

Para acessar as licenças de complementos duráveis do aplicativo atual para os quais o usuário tem o direito de usar, use a propriedade AddOnLicenses do objeto StoreAppLicense . Essa propriedade retorna uma coleção de objetos StoreLicense que representam as licenças complementares.

private StoreContext context = null;

public async void GetLicenseInfo()
{
    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;
    StoreAppLicense appLicense = await context.GetAppLicenseAsync();
    workingProgressRing.IsActive = false;

    if (appLicense == null)
    {
        textBlock.Text = "An error occurred while retrieving the license.";
        return;
    }

    // Use members of the appLicense object to access license info...

    // Access the valid licenses for durable add-ons for this app.
    foreach (KeyValuePair<string, StoreLicense> item in appLicense.AddOnLicenses)
    {
        StoreLicense addOnLicense = item.Value;
        // Use members of the addOnLicense object to access license info
        // for the add-on.
    }
}

Para obter um aplicativo de exemplo completo, confira o Exemplo da Store.