アプリとアドオンのライセンス情報の取得Get license info for apps and add-ons

この記事では、Windows.Services.Store 名前空間の StoreContext クラスのメソッドを使って、現在のアプリとそのアドオンのライセンス情報を取得する方法について説明します。This article demonstrates how to use methods of the StoreContext class in the Windows.Services.Store namespace to get license info for the current app and its add-ons. たとえば、この情報を使って、アプリまたはそのアドオンのライセンスがアクティブになっているかどうかや、試用ライセンスであるかどうかなどを確認できます。For example, you can use this info to determine if the licenses for the app or its add-ons are active, or if they are trial licenses.

注意

Windows.Services.Store 名前空間は、Windows 10 バージョン 1607 で導入され、Visual Studio で、Windows 10 Anniversary Edition (10.0、ビルド 14393) 以降のリリースをターゲットとするプロジェクトでのみ使用できます。The Windows.Services.Store namespace was introduced in Windows 10, version 1607, and it can only be used in projects that target Windows 10 Anniversary Edition (10.0; Build 14393) or a later release in Visual Studio. アプリが Windows 10 の以前のバージョンをターゲットする場合、Windows.Services.Store 名前空間の代わりに Windows.ApplicationModel.Store 名前空間を使う必要があります。If your app targets an earlier version of Windows 10, you must use the Windows.ApplicationModel.Store namespace instead of the Windows.Services.Store namespace. 詳しくは、こちらの記事をご覧ください。For more information, see this article.

前提条件Prerequisites

この例には、次の前提条件があります。This example has the following prerequisites:

  • Windows 10 Anniversary Edition (10.0、ビルド 14393) 以降のリリースをターゲットとするユニバーサル Windows プラットフォーム (UWP) アプリの Visual Studio プロジェクト。A Visual Studio project for a Universal Windows Platform (UWP) app that targets Windows 10 Anniversary Edition (10.0; Build 14393) or a later release.
  • あるアプリの提出を作成したパートナー センターでこのアプリがストアで公開されています。You have created an app submission in Partner Center and this app is published in the Store. 必要に応じで、テスト中にストアでアプリを検索できないようにアプリを構成することも可能です。You can optionally configure the app so it is not discoverable in the Store while you test it. 詳しくは、テスト ガイダンスをご覧ください。For more information, see our testing guidance.
  • アプリ用のアドオンのライセンス情報を取得する場合は、する必要がありますもパートナー センターで、アドオンの作成です。If you want get license info for an add-on for the app, you must also create the add-on in Partner Center.

この例のコードは、次の点を前提としています。The code in this example assumes:

  • コードは、workingProgressRing という名前の ProgressRingtextBlock という名前の TextBlock を含む Page のコンテキストで実行されます。The code runs in the context of a Page that contains a ProgressRing named workingProgressRing and a TextBlock named textBlock. これらのオブジェクトは、それぞれ非同期操作が発生していることを示するためと、出力メッセージを表示するために使用されます。These objects are used to indicate that an asynchronous operation is occurring and to display output messages, respectively.
  • コード ファイルには、Windows.Services.Store 名前空間の using ステートメントがあります。The code file has a using statement for the Windows.Services.Store namespace.
  • アプリは、アプリを起動したユーザーのコンテキストでのみ動作するシングル ユーザー アプリです。The app is a single-user app that runs only in the context of the user that launched the app. 詳しくは、「アプリ内購入と試用版」をご覧ください。For more information, see In-app purchases and trials.

注意

デスクトップ ブリッジを使用するデスクトップ アプリケーションがある場合、この例には示されていないコードを追加して StoreContext オブジェクトを構成することが必要になることがあります。If you have a desktop application that uses the Desktop Bridge, you may need to add additional code not shown in this example to configure the StoreContext object. 詳しくは、「デスクトップ ブリッジを使用するデスクトップ アプリケーションでの StoreContext クラスの使用」をご覧ください。For more information, see Using the StoreContext class in a desktop application that uses the Desktop Bridge.

コードの例Code example

現在のアプリのライセンス情報を取得するには、GetAppLicenseAsync メソッドを使います。To get license info for the current app, use the GetAppLicenseAsync method. これは、アプリのライセンス情報を提供する StoreAppLicense オブジェクトを返す非同期メソッドです。この情報には、アプリを使用するための有効なライセンスをユーザーが現在所有しているかどうかを示すプロパティ (IsActive) や、ライセンスが試用版向けであるかどうかを示すプロパティ (IsTrial) などが含まれます。This is an asynchronous method that returns a StoreAppLicense object that provides license info for the app, including properties that indicate whether the user currently has a valid license to use the app (IsActive) and whether the license is for a trial version (IsTrial).

ユーザーが使用する権利を持っている現在のアプリの永続的なアドオンのライセンスにアクセスするには、StoreAppLicense オブジェクトの AddOnLicenses プロパティを使います。To access the licenses for durable add-ons of the current app for which the user has an entitlement to use, use the AddOnLicenses property of the StoreAppLicense object. このプロパティは、アドオンのライセンスを表す StoreLicense オブジェクトのコレクションを返します。This property returns a collection of StoreLicense objects that represent the add-on licenses.

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

完全なサンプル アプリケーションについては、ストア サンプルをご覧ください。For a complete sample application, see the Store sample.