获取应用和加载项的许可证信息

面向 Windows10 版本 1607 或更高版本的应用可以使用 Windows.Services.Store 命名空间中 StoreContext 类的方法,以获取当前应用及其加载项的许可证信息。 例如,你可以使用此信息来确定应用或其加载项的许可证是否处于活动状态,或确定它们是否是试用许可证。

备注

本文适用于面向 Windows 10 版本 1607 或更高版本的应用。 如果你的应用面向 Windows 10 的较早版本,则必须使用 Windows.ApplicationModel.Store 命名空间来替代 Windows.Services.Store 命名空间。 有关详细信息,请参阅使用 Windows.ApplicationModel.Store 命名空间进行应用内购买和试用

先决条件

本示例有以下先决条件:

  • 适用于面向 Windows10 版本 1607 或更高版本的通用 Windows 平台 (UWP) 应用的 Visual Studio 项目。
  • 你已在 Windows 开发人员中心仪表板中创建了一个应用提交,并且该应用已发布到应用商店中。 在测试应用期间,你可以选择将应用配置为在应用商店中隐藏。 有关详细信息,请参阅测试指南
  • 如果你想要获取应用的某个加载项的许可证信息,还必须在开发人员中心仪表板中创建加载项

此示例中的代码假设:

  • 代码在含有 ProgressRing(名为 workingProgressRing)和 TextBlock(名为 textBlock)的 Page 上下文中运行。 这些对象分别用于指示是否正在进行异步操作和显示输出消息。
  • 代码文件有一个适用于 Windows.Services.Store 命名空间的 using 语句。
  • 该应用是单用户应用,仅在启动该应用的用户上下文中运行。 有关详细信息,请参阅应用内购买和试用

备注

如果你有使用桌面桥的桌面应用程序,可能需要添加不在此示例中显示的额外代码来配置 StoreContext 对象。 有关详细信息,请参阅在使用桌面桥的桌面应用程序中使用 StoreContext 类

代码示例

若要获取当前应用的许可证信息,请使用 GetAppLicenseAsync 方法。 这是一种异步方法,可返回提供应用的许可证信息的 StoreAppLicense 对象,其中包括指示用户是否具有使用应用的许可证的属性 (IsActive) 和指示许可证是否用于试用版的属性 (IsTrial)。

若要检索应用的加载项许可证,请使用 StoreAppLicense 对象的 AddOnLicenses 属性。 此属性返回 StoreLicense 对象集合,表示应用的加载项许可证。 若要确定用户是否具有使用加载项的许可证,请使用 IsActive 属性。

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

有关完整的示例应用程序,请参阅应用商店示例