取得應用程式和附加元件的授權資訊
本文示範如何在 Windows.Services.Store 命名空間中使用 StoreContext 類別的方法,取得目前應用程式及其附加元件的授權資訊。 例如,您可以使用這項資訊來判斷應用程式或其附加元件的授權是否有效,或它們是否為試用版授權。
注意
Windows.Services.Store 命名空間是在 Windows 10 版本 1607 中引進的,而且在 Visual Studio 中只能用於以 Windows 10 年度版本 (10.0;組建 14393) 或更新版本為目標的專案。 如果您的應用程式以舊版 Windows 10 為目標,您必須使用 Windows.ApplicationModel.Store 命名空間,而不是 Windows.Services.Store 命名空間。 如需詳細資訊,請參閱這篇文章。
必要條件
此範例具有以下必要條件:
- 以 Windows 10 年度版本 (10.0;組建 14393) 或更新版本為目標之通用 Windows 平台 (UWP) 應用程式的 Visual Studio 專案。
- 您已在合作夥伴中心建立應用程式提交,且此應用程式會在市集中發佈。 您可以選擇將應用程式設定為在您進行測試時無法在市集中探索。 如需詳細資訊,請參閱我們測試指導方針。
- 如果您想要取得應用程式附加元件的授權資訊,您還必須在合作夥伴中心建立附加元件。
此範例中的程式碼假設:
- 程序碼會在 Page 的內容中執行,其中包含名為
workingProgressRing
的 ProgressRing 和名為textBlock
的 TextBlock。 這些物件是用來指出非同步作業正在發生,以及分別顯示輸出訊息。 - 程式碼檔案具有 Windows.Services.Store 命名空間的 using 陳述式。
- 應用程式是單一使用者應用程式僅會在啟動應用程式的使用者內容中執行。 如需詳細資訊,請參閱應用程式內購買和試用版。
注意
如果您有使用傳統型橋接器的傳統型應用程式,可能需要新增未顯示在本範例中的其他程式碼來設定 StoreContext 物件。 如需詳細資訊,請參閱在使用傳統型橋接器的傳統型應用程式中使用 StoreContext 類別。
程式碼範例
若要取得目前應用程式的授權資訊,請使用 GetAppLicenseAsync 方法。 這是一種非同步方法,會傳回 StoreAppLicense 物件,當中提供應用程式的授權資訊,包括相關屬性,指出使用者目前是否擁有有效的授權而可以使用應用程式 (IsActive),以及授權是否適用於試用版 (IsTrial)。
若要存取使用者有權使用之目前應用程式的耐久性附加元件授權,請使用 StoreAppLicense 物件的 AddOnLicenses 屬性。 這個屬性會傳回 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.
}
}
如需完整的範例應用程式,請參閱市集範例。