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