次の方法で共有


アプリ内購入と試用版

Windows SDK には、ユニバーサル Windows プラットフォーム (UWP) アプリからより多くの収益を得るための次の機能を実装するために使用できる API が用意されています。

  • アプリ内購入 アプリが無料かどうかに関係なく、アプリ内から直接コンテンツや新しいアプリ機能(ゲームの次のレベルのアンロックなど)を販売できます。

  • 試用版の機能パートナー センターでアプリを無料試用版として構成する場合は、試用期間中に一部の機能を除外または制限することで、アプリの完全版を購入するように顧客に促すことができます。 顧客がアプリを購入する前に、試用版中にのみ表示されるバナーや透かしなどの機能を有効にすることもできます。

この記事では、UWP アプリでのアプリ内購入と試用版のしくみの概要について説明します。

使用する名前空間を選択する

UWP アプリにアプリ内購入と試用版機能を追加するために使用できる名前空間は 2 つあります。これは、アプリが対象とする Windows 10 または Windows 11 のバージョンによって異なります。 これらの名前空間の API は同じ目標を果たしますが、設計方法がまったく異なり、2 つの API 間でコードに互換性がありません。

  • Windows.Services.Store Windows 10 バージョン 1607 以降、アプリはこの名前空間の API を使用して、アプリ内購入と試用版を実装できます。 アプリ プロジェクトが Visual Studio で Windows 10 Anniversary Edition (10.0; ビルド 14393) またはそれ以降のリリースをターゲットにしている場合、この名前空間のメンバーを使用することをお勧めします。 この名前空間は、ストアで管理される消費型アイテム アドオンなど、最新のアドオンの種類をサポートしており、パートナー センターとストアでサポートされる将来の種類の製品や機能と互換性があるように設計されています。 この名前空間の詳細については、この記事の「Windows.Services.Store 名前空間の」セクションを使用したアプリ内購入と試用版の を参照してください。

  • Windows.ApplicationModel.Store Windows 10 と Windows 11 のすべてのバージョンでは、この名前空間のアプリ内購入と試用版用の古い API もサポートされています。 Windows.ApplicationModel.Store 名前空間の詳細については、「Windows.ApplicationModel.Store 名前空間を使用したアプリ内購入と試用版」を参照してください。

Von Bedeutung

Windows.ApplicationModel.Store 名前空間は新機能で更新されなくなったため、可能であればアプリで Windows.Services.Store 名前空間を使用することをお勧めします。 Windows.ApplicationModel.Store 名前空間は、デスクトップ ブリッジを使用する Windows デスクトップ アプリケーションや、パートナー センターの開発サンドボックスを使用するアプリやゲームではサポートされていません (たとえば、Xbox Live と統合するゲームに当てはまります)。

基本的な概念

ストアで提供されるすべてのアイテムは、通常 、製品と呼ばれます。 ほとんどの開発者は、 アプリアドオンの製品のみを使用します。

アドオンとは、アプリのコンテキストでユーザーに提供する製品や機能で、アプリやゲームで使用する通貨、ゲームの新しいマップや武器、広告なしでアプリを使用する機能、その種類のコンテンツを提供するアプリの音楽や動画などのデジタル コンテンツなどです。 すべてのアプリとアドオンには、ユーザーがアプリまたはアドオンを使用する資格があるかどうかを示すライセンスが関連付けられています。 ユーザーがアプリまたはアドオンを試用版として使用する資格がある場合、ライセンスには試用版に関する追加情報も記載されています。

アプリ内のユーザーにアドオンを提供するには、 パートナー センターでアプリのアドオンを定義し て、ストアがそれについて認識できるようにする必要があります。 その後、アプリは Windows.Services.Store 名前空間または Windows.ApplicationModel.Store 名前空間の API を使用して、アドオンをアプリ内購入としてユーザーに販売できます。

UWP アプリでは、次の種類のアドオンを提供できます。

アドオンの種類 説明
耐久性のある パートナー センターであなたが指定した有効期間を保持するアドオン

デフォルトでは、永続性アドオンは期限切れにならず、その場合は一度だけ購入できます。 アドオンに特定の期間を指定すると、ユーザーは有効期限が切れた後にアドオンを再購入できます。
開発者管理の消耗品 購入して使用し、消費後に再度購入できるアドオン。 あなたは、アドオンが表すアイテムのユーザーの残高を追跡する責任があります。

ユーザーがアドオンに関連付けられているアイテムを使用する場合、パートナーは、ユーザーの残高を維持し、ユーザーがすべてのアイテムを消費した後にアドオンの購入がフルフィルメントされたことをストアに報告する責任があります。 アプリが以前のアドオンの購入をフルフィルメント完了として報告するまで、ユーザーはアドオンをもう一度購入できません。

たとえば、アドオンがゲーム内で 100 コインを表し、ユーザーが 10 コインを消費する場合、アプリまたはサービスはユーザーの新しい残りの残高 90 コインを維持する必要があります。 ユーザーが 100 コインをすべて消費した後、アプリはアドオンをフルフィルメント済みとして報告する必要があります。その後、ユーザーは 100 コイン アドオンをもう一度購入できます。
店舗管理の消耗品 いつでも購入、使用、再購入できるアドオン。 ストアは、アドオンが表すアイテムのユーザーのバランスを追跡します。

ユーザーがアドオンに関連付けられているアイテムを消費した場合、それらのアイテムがフルフィルメントされたことをストアに報告する責任があり、ストアはユーザーの残高を更新します。 ユーザーはアドオンを何度でも購入できます (最初にアイテムを使用する必要はありません)。 アプリは、ユーザーの現在の残高をいつでも照会できます。

たとえば、アドオンがゲームの初期数量 100 コインを表し、ユーザーが 50 コインを消費している場合、アプリは 50 ユニットのアドオンがフルフィルメントされたとストアに報告し、Store は残りの残高を更新します。 その後、ユーザーがアドオンを再購入してさらに100枚のコインを獲得すると、合計150コインになります。

メモ ストアで管理される消耗品アイテムを使用するには、アプリ は Windows 10 Anniversary Edition (10.0; ビルド 14393) 以降のリリースを Visual Studio でターゲットにする必要があり、Windows.ApplicationModel.Store 名前空間ではなく Windows.Services.Store 名前空間を使用する必要があります。
サブスクリプション アドオンを引き続き使用するために、顧客が定期的な間隔で引き続き請求される耐久性のあるアドオン。 お客様は、追加の課金を回避するために、いつでもサブスクリプションを取り消すことができます。

サブスクリプション アドオンを使用するには、アプリが Windows 10 Anniversary Edition (10.0;ビルド 14393) 以降のリリースを対象とする必要があり、Visual Studio で開発されている必要があります。そして、Windows.ApplicationModel.Store 名前空間ではなく、Windows.Services.Store 名前空間を使用する必要があります。

パッケージ付きの耐久性のあるアドオン (ダウンロード コンテンツ (DLC) とも呼ばれます) など、その他の種類のアドオンは、限られた開発者のみが利用できるため、このドキュメントでは説明しません。

Windows.Services.Store 名前空間を使用したアプリ内購入と試用版

このセクションでは、 Windows.Services.Store 名前空間の重要なタスクと概念の概要について説明します。 この名前空間は、Windows 10 Anniversary Edition (10.0; ビルド 14393) またはそれ以降のバージョンをターゲットにしたアプリでのみ使用可能であり、これは Windows 10 バージョン 1607 に対応します。 可能であれば、アプリでは Windows.ApplicationModel.Store 名前空間ではなく Windows.Services.Store 名前空間を使用することをお勧めします。 Windows.ApplicationModel.Store 名前空間の詳細については、この記事を参照してください。

このセクションで

StoreContext クラスを使い始める方法

Windows.Services.Store 名前空間へのメイン エントリ ポイントは StoreContext クラスです。 このクラスは、現在のアプリとその利用可能なアドオンの情報を取得したり、現在のアプリまたはそのアドオンのライセンス情報を取得したり、現在のユーザーのアプリやアドオンを購入したり、その他のタスクを実行したりするために使用できるメソッドを提供します。 StoreContext オブジェクトを取得するには、次のいずれかの操作を行います。

  • シングルユーザー アプリ (つまり、アプリを起動したユーザーのコンテキストでのみ実行されるアプリ) では、静的な GetDefault メソッドを使用して、ユーザーの Microsoft Store 関連データにアクセスするために使用できる StoreContext オブジェクトを取得します。 ほとんどのユニバーサル Windows プラットフォーム (UWP) アプリは、シングルユーザー アプリです。

    Windows.Services.Store.StoreContext context = StoreContext.GetDefault();
    
  • マルチユーザー アプリでは、静的な GetForUser メソッドを使用して、アプリの使用中に Microsoft アカウントでサインインしている特定のユーザーの Microsoft Store 関連データにアクセスするために使用できる StoreContext オブジェクトを取得します。 次の例では、最初に利用可能なユーザーから StoreContext オブジェクトを取得します。

    var users = await Windows.System.User.FindAllAsync();
    Windows.Services.Store.StoreContext context = StoreContext.GetForUser(users[0]);
    

デスクトップ ブリッジを使用する Windows デスクトップ アプリケーションは、このオブジェクトを使用する前に、StoreContext オブジェクトを構成するための追加の手順を実行する必要があります。 詳細については、こちらのセクションをご覧ください。

StoreContext オブジェクトを作成したら、このオブジェクトのメソッドの呼び出しを開始して、現在のアプリとそのアドオンのストア製品情報の取得、現在のアプリとそのアドオンのライセンス情報の取得、現在のユーザーのアプリまたはアドオンの購入、その他のタスクの実行を開始できます。 このオブジェクトを使用して実行できる一般的なタスクの詳細については、次の記事を参照してください。

StoreContext 名前空間と Windows.Services.Store 名前空間のその他の型の使用方法を示すサンプル アプリについては、Store サンプルをご覧ください。

アプリ内購入の実装

Windows.Services.Store 名前空間を使用して、アプリ内購入をアプリ内購入をユーザーに提供するには、次の操作を行います。

  1. ユーザーが購入できるアドオンがアプリでサポートされている場合は、 パートナー センターでアプリのアドオン申請を作成します

  2. アプリにコードを記述して、 アプリまたはアプリが提供するアドオンの製品情報を取得しライセンスがアクティブかどうか (つまり、ユーザーがアプリまたはアドオンを使用するライセンスを持っているかどうか) を判断します。 ライセンスがアクティブでない場合は、アプリ内購入としてユーザーにアプリまたはアドオンを販売する UI を表示します。

  3. ユーザーがアプリやアドオンを購入する場合は、適切な方法で製品を購入します。

  4. この記事のテスト ガイダンス に従って、実装をテストします。

試用版機能の実装

Windows.Services.Store 名前空間を使用してアプリの試用版の機能を除外または制限するには、次の操作を行います。

  1. パートナー センターでアプリを無料試用版として構成します

  2. アプリにコードを記述して、 アプリまたはアプリが提供するアドオンの製品情報を取得しアプリに関連付けられているライセンスが試用版ライセンスであるかどうかを判断します

  3. 試用版の場合は、アプリの特定の機能を除外または制限し、ユーザーがフル ライセンスを購入したときに機能を有効にします。 詳細とコード例については、「 アプリの試用版を実装する」を参照してください。

  4. この記事のテスト ガイダンス に従って、実装をテストします。

アプリ内購入または試用版の実装をテストする

アプリで Windows.Services.Store 名前空間の API を使用してアプリ内購入または試用版機能を実装する場合、アプリをストアに公開し、アプリを開発デバイスにダウンロードして、テストにライセンスを使用する必要があります。 次のプロセスに従って、コードをテストします。

  1. アプリがまだ公開されておらず、ストアで入手できない場合は、アプリが Windows アプリ認定キット の最小要件を満たしていることを確認し、パートナー センターで アプリを提出し 、アプリが認定プロセスに合格していることを確認します。 テスト中に ストアで見つけられないようにアプリを構成 できます。 パッケージフライトの適切な構成注意してください。 パッケージ フライトが正しく構成されていないと、ダウンロードできない場合があります。

  2. 次に、次の操作が完了していることを確認します。

  3. Visual Studio でプロジェクトを開いた状態で、[プロジェクト ] メニューをクリックし、[ストア ]をポイントして、[アプリをストアに関連付ける ]をクリックします。 ウィザードの手順を完了して、テスト に使用するパートナー センター アカウントのアプリにアプリ プロジェクトを関連付けます。

    プロジェクトをストア内のアプリに関連付けない場合、 StoreContext メソッドは、戻り値の ExtendedError プロパティをエラー コード値 (0x803F6107) に設定します。 この値は、ストアにアプリに関する知識がないことを示します。

  4. まだ行っていない場合は、前の手順で指定したストアからアプリをインストールし、アプリを一度実行してから、このアプリを閉じます。 これにより、アプリの有効なライセンスが開発デバイスにインストールされます。

  5. Visual Studio で、プロジェクトの実行またはデバッグを開始します。 コードでは、ローカル プロジェクトに関連付けたストア アプリからアプリとアドオンのデータを取得する必要があります。 アプリの再インストールを求められた場合は、指示に従ってプロジェクトを実行またはデバッグします。

    これらの手順を完了したら、新しいアプリ パッケージをストアに提出せずに、アプリのコードの更新を続行し、更新したプロジェクトを開発用コンピューターでデバッグできます。 アプリのストア バージョンを開発用コンピューターに一度ダウンロードするだけで、テストに使用されるローカル ライセンスを取得できます。 新しいアプリ パッケージをストアに提出する必要があるのは、テストが完了し、アプリのアプリ内購入または試用版関連の機能をユーザーが利用できるようにする場合のみです。

アプリで Windows.ApplicationModel.Store 名前空間を使用している場合は、アプリで CurrentAppSimulator クラスを使用して、アプリをストアに提出する前にテスト中にライセンス情報をシミュレートできます。 詳細については 、「CurrentApp クラスと CurrentAppSimulator クラスの概要」を参照してください。

Windows.Services.Store 名前空間には、テスト中にライセンス情報をシミュレートするために使用できるクラスは用意されていません。 Windows.Services.Store 名前空間を使用してアプリ内購入または試用版を実装する場合、上記のようにテストにライセンスを使用するには、アプリをストアに公開し、アプリを開発デバイスにダウンロードする必要があります。

アプリ内購入の領収書

Windows.Services.Store 名前空間には、アプリのコードで成功した購入のトランザクション レシートを取得するために使用できる API は提供されていません。 これは、クライアント側の API を使用してトランザクションのレシートを取得できる Windows.ApplicationModel.Store 名前空間を使用するアプリとは異なるエクスペリエンスです。

Windows.Services.Store 名前空間を使用してアプリ内購入を実装し、特定のユーザーがアプリまたはアドオンを購入したかどうかを検証する場合は、Microsoft Store コレクション REST APIquery for products メソッドを使用できます。 このメソッドのリターンデータは、指定された顧客が特定の製品に対する権利を持っているかどうかを確認し、ユーザーが製品を取得したトランザクションのデータを提供します。 Microsoft Store コレクション API は、Azure AD 認証を使用してこの情報を取得します。

StoreContext クラスとデスクトップ ブリッジの併用

デスクトップ ブリッジを使用するデスクトップ アプリケーションでは、StoreContext クラスを使用して、アプリ内購入と試用版を実装できます。 ただし、Win32 デスクトップ アプリケーション、またはレンダリング フレームワークに関連付けられたウィンドウ ハンドル (HWND) を持つデスクトップ アプリケーション (WPF や Windows App SDK アプリケーションなど) がある場合は、アプリケーションで StoreContext オブジェクトを構成して、オブジェクトによって表示されるモーダル ダイアログの所有者ウィンドウであるアプリケーション ウィンドウを指定する必要があります。

多くの StoreContext メンバー (および StoreContext オブジェクトを介してアクセスされる他の関連型のメンバー) は、製品の購入などのストア関連の操作について、ユーザーにモーダル ダイアログを表示します。 デスクトップ アプリケーションがモーダル ダイアログの所有者ウィンドウを指定するように StoreContext オブジェクトを構成しない場合、このオブジェクトは不正確なデータまたはエラーを返します。

デスクトップ ブリッジを使用するデスクトップ アプリケーションで StoreContext オブジェクトを構成するには、次の手順に従います。

.NET 6 以降の場合

アプリケーションが .NET 6 以降を使用して C# で記述されている場合は、次の手順に従います。

  1. プロジェクト ファイルの TargetFramework プロパティが、WinRT.Interop 名前空間へのアクセスを提供する Windows ランタイム API にアクセスするための特定の Windows SDK バージョンに設定されていることを確認します。 例えば次が挙げられます。

    <PropertyGroup>
      <!-- You can also target other versions of the Windows SDK and .NET, e.g. "net6.0-windows10.0.19041.0" -->
      <TargetFramework>net6.0-windows10.0.22000.0</TargetFramework>
    </PropertyGroup>
    
  2. StoreContext オブジェクトを取得するには、GetDefault メソッド (または、この記事で前述したように、アプリがマルチユーザー アプリの場合は GetForUser) を使用します。 指定したウィンドウ ハンドルでダイアログを初期化するには、 WinRT.Interop.WindowNative.GetWindowHandle メソッドと WinRT.Interop.InitializeWithWindow.Initialize メソッドを使用します ( 「ウィンドウ ハンドルの取得 (HWND)」 および 「CoreWindow に依存する WinRT UI オブジェクトの表示」を参照してください)。

    StoreContext context = StoreContext.GetDefault();
    // Obtain window handle by passing in pointer to the window object
    var hwnd = WinRT.Interop.WindowNative.GetWindowHandle(windowObject);
    // Initialize the dialog using wrapper function for IInitializeWithWindow
    WinRT.Interop.InitializeWithWindow.Initialize(context, hwnd); 
    

以前のバージョンの .NET または C++ の場合

アプリケーションが以前のバージョンの .NET または C++ で記述されている場合は、次の手順に従います。

  1. 次のいずれかの操作を行って、アプリが IInitializeWithWindow インターフェイスにアクセスできるようにします。

    • アプリケーションが C# や Visual Basic (.NET 6 より前) などのマネージ言語で記述されている場合は、次の C# の例に示すように、ComImport 属性を使用してアプリのコードで IInitializeWithWindow インターフェイスを宣言します。 この例では、コード ファイルに System.Runtime.InteropServices 名前空間の using ステートメントがあることを前提としています。

      [ComImport]
      [Guid("3E68D4BD-7135-4D10-8018-9FB6D9F33FA1")]
      [InterfaceType(ComInterfaceType.InterfaceIsIUnknown)]
      public interface IInitializeWithWindow
      {
          void Initialize(IntPtr hwnd);
      }
      
    • アプリケーションが C++ で記述されている場合は、コードに shobjidl.h ヘッダー ファイルへの参照を追加します。 このヘッダー ファイルには、 IInitializeWithWindow インターフェイスの宣言が含まれています。

  2. この記事で前述したように、GetDefault メソッド (アプリがマルチユーザー アプリの場合は GetForUser) を使用して StoreContext オブジェクトを取得し、このオブジェクトを IInitializeWithWindow オブジェクトにキャストします。 次に、IInitializeWithWindow.Initialize メソッドを呼び出し、その後、StoreContext メソッド によって表示される任意のモーダル ダイアログの所有者として設定したいウィンドウのハンドルを渡します。 次の C# の例は、アプリのメイン ウィンドウのハンドルをメソッドに渡す方法を示しています。 ウィンドウ ハンドル (HWND) の取得と、CoreWindowに依存する WinRT UI オブジェクトの表示 も参照してください。

    StoreContext context = StoreContext.GetDefault();
    IInitializeWithWindow initWindow = (IInitializeWithWindow)(object)context;
    initWindow.Initialize(System.Diagnostics.Process.GetCurrentProcess().MainWindowHandle);
    

製品、SKU、および利用可能性

ストア内のすべての製品には少なくとも 1 つの SKU があり、各 SKU には少なくとも 1 つの 在庫状況があります。 これらの概念は、パートナー センターのほとんどの開発者から抽象化されており、ほとんどの開発者はアプリやアドオンの SKU や可用性を定義することはありません。 ただし、 Windows.Services.Store 名前空間のストア製品のオブジェクト モデルには SKU と可用性が含まれているため、これらの概念の基本的な理解は、一部のシナリオで役立つ場合があります。

オブジェクト 説明
プロダクト 製品とは、アプリやアドオンなど、ストアで入手できるあらゆる種類の製品を指します。

ストア内の各製品には、対応する StoreProduct オブジェクトがあります。 このクラスは、製品のストア ID、ストア登録情報の画像とビデオ、価格情報などのデータにアクセスするために使用できるプロパティを提供します。 また、製品の購入に使用できる方法も提供します。
SKU(在庫管理単位) SKUは、独自の説明、価格、その他の固有の商品詳細を持つ商品の特定のバージョンです。 各アプリまたはアドオンには、既定の SKU があります。 ほとんどの開発者がアプリの複数の SKU を持つのは、アプリの完全版と試用版を公開する場合だけです (ストア カタログでは、これらの各バージョンは同じアプリの異なる SKU です)。

一部のパブリッシャーは、独自のSKUを定義することができます。 たとえば、大規模なゲーム パブリッシャーは、赤い血が許可されていない市場では 1 つの SKU で緑の血を表示し、他のすべての市場では別の SKU で赤い血を表示するゲームをリリースする場合があります。 また、デジタル動画コンテンツを販売するパブリッシャーは、動画に対して 2 つの SKU を公開し、1 つは高解像度バージョンに 1 つ、標準解像度バージョンには別の SKU を公開する場合があります。

ストア内の各 SKU には、対応する StoreSku オブジェクトがあります。 すべての StoreProduct には、製品の SKU にアクセスするために使用できる Skus プロパティがあります。
可用性 アベイラビリティ は、個別の価格情報を持つ SKU の特定のバージョンです。 各SKUにはデフォルトの可用性があります。 一部のパブリッシャーは、特定のSKUに異なる価格オプションを導入するために、独自の利用可能性を定義することができます。

ストア内の各可用性には、対応する StoreAvailability オブジェクトがあります。 すべての StoreSku には、SKU の空き状況にアクセスするために使用できる Availabilities プロパティがあります。 ほとんどの開発者にとって、各 SKU には 1 つの既定の可用性があります。

ストア ID

ストア内のすべてのアプリ、アドオン、またはその他の製品には、 ストア ID が関連付けられています ( これは、製品ストア ID とも呼ばれます)。 多くの API では、アプリやアドオンで操作を実行するためにストア ID が必要です。

ストア内の商品のストアIDは、 9NBLGGH4R315などの12文字の英数字の文字列です。 ストアで商品のストアIDを取得するには、いくつかの方法があります。

  • アプリの場合は、パートナー センターの [アプリ ID] ページで ストア ID を取得できます。
  • アドオンの場合は、パートナー センターのアドオンの概要ページでストア ID を取得できます。
  • どの製品でも、製品を表す StoreProduct オブジェクトの StoreId プロパティを使用して、プログラムでストア ID を取得することもできます。

SKUと在庫状況のある商品の場合、SKUと在庫状況にも、さまざまな形式の独自のストアIDがあります。

オブジェクト ストア ID の形式
SKU(在庫管理単位) SKUのストアIDの形式は <product Store ID>/xxxxで、 xxxx は商品のSKUを識別する4文字の英数字の文字列です。 たとえば、9NBLGGH4R315/000N のようにします。 この ID は、StoreSku オブジェクトの StoreId プロパティによって返され、SKU ストア ID と呼ばれることもあります。
可用性 在庫状況のストアIDの形式は <product Store ID>/xxxx/yyyyyyyyyyyyで、 xxxx は商品のSKUを識別する4文字の英数字文字列、 yyyyyyyyyyyy はSKUの在庫状況を識別する12文字の英数字文字列です。 たとえば、9NBLGGH4R315/000N/4KW6QZD2VN6X のようにします。 この ID は、StoreAvailability オブジェクトの StoreId プロパティによって返され、可用性ストア ID と呼ばれることもあります。

コードでアドオンの製品 ID を使用する方法

アプリのコンテキストでアドオンをユーザーが利用できるようにする場合は、パートナー センターでアドオンの申請を作成するときに、アドオンの一意の製品 ID を入力する必要があります。 この製品 ID を使用して、コード内のアドオンを参照できますが、製品 ID を使用できる具体的なシナリオは、アプリのアプリ内購入に使用する名前空間によって異なります。

パートナー センターでアドオンに入力する製品 ID は、アドオンの ストア ID とは異なります。 ストア ID はパートナー センターによって生成されます。

Windows.Services.Store 名前空間を使用するアプリ

アプリで Windows.Services.Store 名前空間を使用している場合は、製品 ID を使用して、アドオンを表す StoreProduct やアドオンのライセンスを表す StoreLicense を簡単に識別できます。 製品 ID は、 StoreProduct.InAppOfferToken プロパティと StoreLicense.InAppOfferToken プロパティによって公開されます。

製品 ID はコード内のアドオンを識別する便利な方法ですが、 Windows.Services.Store 名前空間のほとんどの操作では、製品 ID ではなくアドオンの ストア ID が使用されます。 たとえば、アプリの 1 つ以上の既知のアドオンをプログラムで取得するには、アドオンの (製品 ID ではなく) ストア ID を GetStoreProductsAsync メソッドに渡します。 同様に、コンシューマブル アドオンをフルフィルメント済みとして報告するには、アドオンのストア ID を (製品 ID ではなく) ReportConsumableFulfillmentAsync メソッドに渡します。

Windows.ApplicationModel.Store 名前空間を使用するアプリ

アプリで Windows.ApplicationModel.Store 名前空間を使用する場合は、ほとんどの操作でパートナー センターでアドオンに割り当てた製品 ID を使用する必要があります。 例えば次が挙げられます。