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 a fim de obter informações de licença do aplicativo atual ou um de seus complementos. Por exemplo, você pode usar essas informações para determinar se as licenças para o aplicativo ou 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 pode ser usada somente em projetos para Windows 10 Anniversary Edition (10.0; Compilação 14393) ou uma versão posterior no Visual Studio. Se seu aplicativo for direcionado para uma versão anterior do Windows 10, use o namespace ApplicationModel em vez do 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) destinado ao Windows 10 Anniversary Edition (10.0; Build 14393) ou uma versão posterior.
  • Você criou um envio de aplicativo no Partner Center e esse aplicativo é publicado na Loja. Opcionalmente, é possível configurar o app para que ele não possa ser descoberto na Store enquanto você o testa. Para obter mais informações, consulte as diretrizes para 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 que:

  • O código seja executado no contexto de uma Página que contenha um ProgressRing denominado workingProgressRing e um TextBlock denominado textBlock. Esses objetos sejam usados para indicar que uma operação assíncrona está ocorrendo e exibir mensagens de saída, respectivamente.
  • O arquivo de código tenha 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, consulte Compras no aplicativo e avaliações.

Observação

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

Exemplo de código

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

Para acessar as licenças para complementos duráveis do app atual que 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 do complemento.

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 app de exemplo completo, consulte o exemplo da Store.