Поделиться через


Получение информации о лицензии для приложений и надстроек

В этой статье показано, как использовать методы класса StoreContext в пространстве имен Windows.Services.Store, чтобы получить сведения о лицензии для текущего приложения и его надстроек. Например, эти сведения можно использовать для определения того, активны ли лицензии для приложения или его надстроек или являются ли они пробными лицензиями.

Заметка

Пространство имен Windows.Services.Store было представлено в Windows 10, версии 1607, и его можно использовать только в проектах, нацеленных на Windows 10 Anniversary Edition (10.0; Сборка 14393) или более поздний выпуск в Visual Studio. Если приложение предназначено для более ранней версии Windows 10, необходимо использовать пространство имен Windows.ApplicationModel.Store вместо пространства имен Windows.Services.Store. Дополнительные сведения см. в этой статье.

Необходимые условия

В этом примере имеются следующие предварительные требования:

  • Проект Visual Studio для приложения универсальной платформы Windows (UWP), предназначенного для Windows 10 Anniversary Edition (10.0; Сборка 14393) или более поздней версии.
  • Вы создали заявку на приложение в Центре партнеров, и это приложение опубликовано в магазине приложений. При необходимости можно настроить приложение, чтобы оно не было обнаружено в Магазине во время его тестирования. Дополнительные сведения см. в руководстве по тестированию .
  • Если вы хотите получить сведения о лицензии для надстройки для приложения, необходимо также создать надстройку в Центре партнеров.

Код в этом примере предполагает:

  • Код выполняется в контексте страницы , которая содержит ProgressRing с именем workingProgressRing и TextBlock с именем textBlock. Эти объекты используются для указания, что выполняется асинхронная операция и для отображения выходных сообщений соответственно.
  • Файл кода содержит директиву "using" для пространства имен Windows.Services.Store.
  • Приложение — это однопользовательское приложение, которое запускается только в контексте пользователя, запускающего приложение. Дополнительные сведения см. в разделе покупки в приложении и пробные версии.

Заметка

Если у вас есть классическое приложение, использующее мост классических приложений, может потребоваться добавить дополнительный код, не показанный в этом примере, чтобы настроить объект StoreContext. Дополнительные сведения см. в статье Использование класса StoreContext в классическом приложении, использующем подключение через Desktop Bridge.

Пример кода

Чтобы получить сведения о лицензии для текущего приложения, используйте метод GetAppLicenseAsync. Это асинхронный метод, который возвращает объект StoreAppLicense, предоставляющий сведения о лицензии для приложения, включая свойства, указывающие, имеет ли пользователь действительную лицензию на использование приложения (IsActive) и является ли лицензия для пробной версии (IsTrial).

Чтобы получить доступ к лицензиям для долговечных дополнений текущего приложения, для которого у пользователя есть право использовать, используйте свойство AddOnLicenses объекта StoreAppLicense. Это свойство возвращает коллекцию StoreLicense объектов, представляющих лицензии дополнений.

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.
    }
}

Чтобы ознакомиться с полным примером приложения, см. пример магазина .