Obter informações de licença para apps e complementosGet license info for apps and add-ons

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.This article demonstrates how to use methods of the StoreContext class in the Windows.Services.Store namespace to get license info for the current app and its add-ons. 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.For example, you can use this info to determine if the licenses for the app or its add-ons are active, or if they are trial licenses.

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.The Windows.Services.Store namespace was introduced in Windows 10, version 1607, and it can only be used in projects that target Windows 10 Anniversary Edition (10.0; Build 14393) or a later release in 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.If your app targets an earlier version of Windows 10, you must use the Windows.ApplicationModel.Store namespace instead of the Windows.Services.Store namespace. Para obter mais informações, consulte este artigo.For more information, see this article.

Pré-requisitosPrerequisites

Este exemplo tem os seguintes pré-requisitos:This example has the following prerequisites:

  • 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.A Visual Studio project for a Universal Windows Platform (UWP) app that targets Windows 10 Anniversary Edition (10.0; Build 14393) or a later release.
  • Você criou um envio de aplicativo no Partner Center e esse aplicativo é publicado na loja.You have created an app submission in Partner Center and this app is published in the Store. Opcionalmente, é possível configurar o app para que ele não possa ser descoberto na Store enquanto você o testa.You can optionally configure the app so it is not discoverable in the Store while you test it. Para obter mais informações, consulte as diretrizes para teste.For more information, see our testing guidance.
  • Se você quiser obter informações de licença para um complemento para o aplicativo, também deverá criar o complemento no Partner Center.If you want get license info for an add-on for the app, you must also create the add-on in Partner Center.

O código neste exemplo pressupõe que:The code in this example assumes:

  • O código seja executado no contexto de uma Página que contenha um ProgressRing denominado workingProgressRing e um TextBlock denominado textBlock.The code runs in the context of a Page that contains a ProgressRing named workingProgressRing and a TextBlock named textBlock. Esses objetos sejam usados para indicar que uma operação assíncrona está ocorrendo e exibir mensagens de saída, respectivamente.These objects are used to indicate that an asynchronous operation is occurring and to display output messages, respectively.
  • O arquivo de código tenha uma instrução using para o namespace Windows.Services.Store.The code file has a using statement for the Windows.Services.Store namespace.
  • O app seja um app de usuário único executado somente no contexto do usuário que o iniciou.The app is a single-user app that runs only in the context of the user that launched the app. Para obter mais informações, consulte Compras no aplicativo e avaliações.For more information, see In-app purchases and trials.

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.If you have a desktop application that uses the Desktop Bridge, you may need to add additional code not shown in this example to configure the StoreContext object. Para obter mais informações, consulte Usando a classe StoreContext em um aplicativo da área de trabalho que usa o Desktop Bridge.For more information, see Using the StoreContext class in a desktop application that uses the Desktop Bridge.

Exemplo de códigoCode example

Para obter informações de licença para o aplicativo atual, use o método GetAppLicenseAsync.To get license info for the current app, use the GetAppLicenseAsync method. 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).This is an asynchronous method that returns a StoreAppLicense object that provides license info for the app, including properties that indicate whether the user currently has a valid license to use the app (IsActive) and whether the license is for a trial version (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.To access the licenses for durable add-ons of the current app for which the user has an entitlement to use, use the AddOnLicenses property of the StoreAppLicense object. Essa propriedade retorna uma coleção de objetos StoreLicense que representam as licenças do complemento.This property returns a collection of StoreLicense objects that represent the add-on licenses.

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.For a complete sample application, see the Store sample.