Partilhar via


Obter informações de licença para aplicações e suplementos

Este artigo demonstra como usar métodos da classe StoreContext do 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 destinados a Windows 10 Anniversary Edition (10.0; Build 14393) ou uma versão posterior no Visual Studio. Se o seu aplicativo tiver como destino uma versão anterior do Windows 10, você deverá usar o namespace Windows.ApplicationModel.Store em vez do namespace Windows.Services.Store. Para 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, você pode configurar o aplicativo para que ele não seja detetável na Loja enquanto você o testa. Para obter mais informações, consulte as nossas diretrizes de teste .
  • Se quiser obter informações de licença para um complemento para o aplicativo, você também deve 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 chamado workingProgressRing e um TextBlock chamado textBlock. Esses objetos são usados para indicar que uma operação assíncrona está ocorrendo e para exibir mensagens de saída, respectivamente.
  • O ficheiro de código utiliza a instrução usando para o namespace Windows.Services.Store.
  • O aplicativo é um aplicativo de usuário único que é executado somente no contexto do usuário que iniciou o aplicativo. Para obter mais informações, consulte Compras e avaliações no aplicativo.

Observação

Se você tiver um aplicativo de área de trabalho que usa o Desktop Bridge, talvez seja necessário adicionar código adicional não mostrado neste exemplo para configurar o objeto StoreContext . Para obter mais informações, consulte Usando a classe StoreContext em um aplicativo de á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 GetAppLicenseAsync método. Este é 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 atualmente 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 aceder às licenças para complementos duráveis da aplicação atual a que o utilizador tem direito de uso, utilize a propriedade AddOnLicenses do objeto StoreAppLicense. Esta propriedade retorna uma coleção de objetos StoreLicense que representam as licenças de 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 um exemplo completo de aplicação, consulte o exemplo do Store.