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


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

В этой статье показано, как использовать методы класса 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" в классическом приложении, использующего мост для классических приложений.

Пример кода

Чтобы получить сведения о лицензии для текущего приложения, используйте метод 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.
    }
}

Полный пример приложения см. в примере Магазина.