Windows Phone 8 のアプリ内購入のテスト

2013/12/05

対象: Windows Phone 8 のみ

アプリ内購入は Windows Phone 8 の新機能であり、Windows Phone 8 アプリのユーザーはアプリ内からアイテムを購入できるようになります。アプリを購入できるように公開する前に、アプリのアプリ内購入機能をテストするために 3 つのオプションがあります。

次のいずれかの手法に従うことによって、Windows Phone アプリでアプリ内購入をテストできます。

アプリのアプリ内機能をテストする方法の 1 つは、デベロッパー センター ベータ アプリを作成し、ベータ アプリ内製品を追加する方法です。Windows Phone デベロッパー センター では、アプリをベータ アプリとして Windows Phone Store にアップロードできます。次に、ベータ アプリ内製品をアプリに追加します。ベータ アプリを使って、アプリ内購入プロセスをテストします。

デベロッパー センター ベータ アプリを作成してアプリ内購入をテストする代わりに、モック アプリ内購入ライブラリをソリューションに追加できます。Visual Studio で、モック アプリ内購入ライブラリを追加のプロジェクトとしてソリューションに追加します。このライブラリには、モック アプリ内購入機能が含まれており、エミュレーターによって、アプリのアプリ内購入機能のテストに使用できます。アプリをローカルでテストするときには、モック ライブラリに含まれている機能を呼び出すようにアプリを変更する必要があります。

このシンプルなモック ライブラリは、実際のサービスを設定することなく、容易にアプリ内購入を操作できるように設計されています。このライブラリは、アプリ内購入 API の Thin ラッパーです。ライブラリの初期化方法に基づいて、このライブラリはテストに用に定義された製品のすべての応答のモックを提供するか、すべての呼び出しをライブ アプリ内購入 API に受け渡します。これにより、フラグ値の変更に基づいて、実際の API またはモック API を使用して、さまざまなテスト シナリオを対象とすることができます。

このライブラリは、アプリ内購入の動作を再現するように設計されています。"モック モード" では、ライブラリに領収書の一覧と共に、ライセンスごとの状態情報も保持されます。これにより、ブラウズ、検索、購入、フルフィルメントのフロー全体を試すことができます。"モック モード" では、ライブラリによってアプリ内購入のモック画面はアクティブ化されず、エミュレーターでのテスト時にアプリ内購入フローを実行するためのシンプルなメッセージ ボックスが表示されます。

モック アプリ内購入ライブラリとサンプル アプリをダウンロードする

モック アプリ内購入ライブラリ」からモック アプリ内購入ライブラリとサンプル アプリをダウンロードします。

モック アプリ内購入ライブラリの使用

モック アプリ内購入ライブラリは、C# コードで記述されています。

アプリ内購入機能で使用する各 .cs ファイルに、次の using ステートメントのコード ブロックを含めます。

#if DEBUG
using MockIAPLib;
using Store = MockIAPLib;
#else
using Windows.ApplicationModel.Store;
#endif

このステートメントによって、モック ライブラリを使用したアプリ内購入のテストと、公開されたアプリとして実際のアプリ内購入の呼び出すことによるアプリ内購入のテストを切り替えることができます。テストするときには、デバッグ モードでアプリをビルドする必要があります。デバッグ モードにするには、Visual Studio の [ソリューション構成] ボックスの一覧で [デバッグ] をクリックします。Windows Phone Store への配置用にアプリをビルドする準備ができたら、[ソリューション構成] ボックスの一覧で [リリース] を選択してリリース モードに変更します。

モック ライブラリを初期化するには、App.xaml.cs ファイルの App コンストラクターの最後に次のコードを追加します。

            SetupMockIAP();

次に、SetupMockIAP メソッドを追加して、モック ライブラリを初期化し、架空の製品を追加します。サンプル SetupMockIAP メソッドは、次のようになります。

        private void SetupMockIAP()
        {
#if DEBUG
            MockIAP.Init();

            MockIAP.RunInMockMode(true);
            MockIAP.SetListingInformation(1, "en-us", "A description", "1", "TestApp");

            // Add some more items manually.
            ProductListing p = new ProductListing
            {
                Name = "img.2",
                ImageUri = new Uri("/Res/Image/2.jpg", UriKind.Relative),
                ProductId = "img.2",
                ProductType = Windows.ApplicationModel.Store.ProductType.Durable,
                Keywords = new string[] { "image" },
                Description = "An image",
                FormattedPrice = "1.0",
                Tag = string.Empty
            };
            MockIAP.AddProductListing("img.2", p);
#endif
        }

このメソッドに含まれるコードは、プロジェクトをデバッグ モードで実行している場合にのみ実行されることに注意してください。

アプリ内購入製品を設定するには、テストで使用するすべての製品のリストを提供する XML スニペットを使用する方法もあります。

XML は次のようになります。

<?xml version="1.0"?>
<ProductListings>
    <ProductListing Key="test1" Purchased="true" Fulfilled="true">
        <Name>Testproduct</Name>
        <Description>A sample product listing</Description>
        <ProductId>test.durable.1</ProductId>
        <ProductType>Durable</ProductType>
        <FormattedPrice>$1.00</FormattedPrice>
        <ImageUri></ImageUri>
        <Keywords>test;product</Keywords>
        <Tag>Additional text</Tag>
    </ProductListing>
</ProductListings>

この XML を "モック ストア" に読み込むには、次のメソッド呼び出しを使用します。

MockIAP.PopulateIAPItemsFromXml(Xml);

メモメモ:

この XML 形式を使用する場合、Purchased および Fulfilled 属性を true または false に設定することによって、アイテムが購入済みおよびフルフィルメント済みであるかどうかを事前に設定できます。

次のコードは、テストする製品を読み込む方法を示しています。

ListingInformation li = await CurrentApp.LoadListingInformationAsync();
メモメモ:

この関数呼び出しは、モック ライブラリを使用してテストする場合も、公開されたアプリとして実行する場合も同じです。このライブラリには、領収書や状態情報などのデータのモック キャッシュをクリアするために使用できる API が含まれています。MockIAP.ClearCache メソッドを呼び出してモック キャッシュをクリアします。

モック ライブラリの使用方法の詳細については、このトピックの「モック アプリ内購入ライブラリとサンプル アプリをダウンロードする」を参照してください。

デベロッパー センター ベータ アプリを作成したり、モック アプリ内購入ライブラリをソリューションに追加したりしてアプリ内購入をテストする代わりに、Microsoft インターネット インフォメーション サービス (IIS) を使用してアプリ内購入モック サービスを設定することもできます。

Visual Studio を使用して、Windows Phone エミュレーターでアプリのアプリ内購入の動作をテストできます。Windows Phone エミュレーターは、ローカル コンピューターまたはエミュレーターからアクセスできるサーバーに配置されたモック サービスに接続します。

モック サービスを使用してアプリ内購入をテストするメリット

アプリ内購入のモック サービスには、次のようなメリットがあります。

  • Windows Phone エミュレーターを使用することによって、開発プロセスにおけるエンドツーエンドのフローをテストできます。

  • このソリューションを機能させるために、データを デベロッパー センター に送信したり、コードを変更したりする必要がありません。

  • 製品の構成の変更とアプリとの統合をすばやく繰り返すことができます。

  • アプリと Windows Phone プラットフォームとの間で行われるプラットフォームの対話をシミュレーションすることができます。

アプリ内購入のモック サービスを使用する場合に関連するアクションを次の図に示します。

Mock Service

前述の図の各フローについては、以下の表で説明します。

  • A) モック サービスの配置: IIS でモック サービスをダウンロードして設定します。

  • B) 製品リストの追加: テストするアプリのモック製品リスト (カタログ) を追加および構成します。

  • C) 製品のリスト: モック製品のリストを取得します。

  • D) 製品の購入: 購入するモック製品を選択し、モック サービスから購入します。

  • E) ライセンスの列挙: アプリ内の製品について利用可能なすべてのライセンスを列挙し、製品のライセンスが既に付与されているかどうかや、一部の製品のフルフィルメントが必要であるかどうかを特定します。

  • F) フルフィルメントの確認: モック製品が正常に購入されたことを確認します。

  • G) 領収書の取得: 購入されたすべてのモック製品の領収書を取得します。

  • H) フルフィルメント: (省略可能) サーバーからデジタル コンテンツをダウンロードします。

  • I) ライセンスの領収書の送付: (省略可能) 購入のフルフィルメントにデジタル コンテンツが必要な場合、デジタル署名された購入の領収書をサーバーに渡し、所有または管理しているサービスからこのコンテンツをダウンロードします。

前提条件

作業を始める前に、次のソフトウェアがコンピューターにインストールされていることを確認します。

  • Visual Studio 2010 以降のバージョン

  • IIS 7 と ASP.NET 4.5

    インストールの手順については、「IIS および ASP.NET モジュールのインストール」を参照してください。

  • Web 配置

    モック サービスの配置パッケージを配置するには、配置ファイルを実行するコンピューターに Web 配置 (msdeploy.exe) をインストールする必要があります。Web 配置をインストールする方法については、「Web 配置の概要」を参照してください。

また、WCF サービスに HTTP アクティブ化をインストールし、IIS に対する HTTP 要求のファイアウォール例外を作成する必要があります。詳細については、「Windows Phone 8 エミュレーターからローカル Web サービスに接続する方法」を参照してください。

エミュレーターの設定

エミュレーターを設定するには、以下の手順を実行する必要があります。

  1. ローカル コンピューターにモック サービスを配置します。

  2. モック サービスに接続するようにエミュレーターを構成します。

  3. アプリで使用されるように製品カタログを構成します。

  4. 特定のアプリ ID を使用するようにアプリ マニフェストを更新します。

手順 1: ローカル コンピューターにモック サービスを配置する

以下の配置の手順では、モック カタログ サービスの配置パッケージをダウンロードして設定します。

モック カタログ サービスの配置パッケージをダウンロードする

モック カタログ サービスを IIS に配置するには、モック カタログ サービス コードに zip ファイルとして含まれているモック カタログ サービスの配置パッケージをダウンロードする必要があります。

メモメモ:

カスタム配置のシナリオでは、モック カタログ サービスのソース コードをダウンロードして変更します。

IIS でモック サービスを設定する

  1. IIS マネージャーを開きます。

  2. [接続] ウィンドウで、階層の [サイト] ノードを右クリックし、[Web サイトの追加] をクリックします。

  3. [Web サイトの追加] ダイアログ ボックスで、[サイト名] を次のように設定します。

    IAPCatalogMockService

  4. [物理パス] を次のように設定します。

    <path>\IapcatalogMockService\CatalogMockService

  5. IIS_IUSRS がアクセスできるように、このサイトが配置されるフォルダーのアクセス許可を設定します。

  6. 以下の手順に基づいて、IAPCatalogMockService という名前のサイトを使用する CatalogMock サービス パッケージを配置します。

    1. 管理者としてコマンド プロンプト ウィンドウを開きます。

    2. Mock-Project-Deployment Package\Deployment Package という名前のフォルダーを開きます。

    3. コマンド プロンプトで次のコマンドを入力して、モック サービスを配置します。

      CatalogServiceMockDeploymentPackage.deploy.cmd /Y

IIS の詳細については、「Web サイトの作成 (IIS 7)」を参照してください。モック サービスに関連する配置の手順については、CatalogServiceMockDeploymentPackage.deploy-readme.txt ファイルにも記載されています。

モック サービスが利用可能で、正しく配置されていることを確認する

  1. 次の GET 要求を実行して、サポートされているコマンドの一覧を取得します。

    http://localhost/v8/help

    応答には次の項目が含まれます。

    URI

    メソッド

    説明

    /catalog/apps/{appid}

    GET

    http://localhost/v8/catalog/apps/{APPID} にあるサービス

    /catalog/apps/{appid}/iaps

    POST

    http://localhost/v8/catalog/apps/{APPID}/iaps にあるサービス

    /images/{imageid}

    GET

    http://localhost/v8/images/{IMAGEID} にあるサービス

  2. 次の GET 要求によって返される事前に構成されたイメージを表示できます。

    http://[machine IP address]/v8/images/102a19e4-e6f2-495a-acc7-203bb6c742b9?imagetype=icon_iap

    メモメモ:

    コンピューターの IP アドレスを取得するには、コマンド ウィンドウ (cmd.exe) から「ipconfig」を入力します。

    コマンド ウィンドウに Windows IP 構成が表示されます。IP アドレスは、[イーサネット アダプター vEthernet (内部イーサネット ポート Windows Phone エミュレーター内部スイッチ)] の [IPv4 アドレス] の横に表示されます。

    Testcalls.txt という名前のファイルを参照して、このサービスが処理するその他の呼び出しを確認します。Testcalls.txt ファイルは、ダウンロード パッケージのルートにあります。詳細については、「モック カタログ サービスの配置パッケージをダウンロードする」を参照してください。

手順 2: モック カタログ サービスに接続するようにエミュレーターを構成する

ここでは、サーバーに配置したモック サービスに接続するように Windows Phone エミュレーターを構成する方法を説明します。Windows Phone エミュレーターが設定されているコンピューターにモック サービスを配置した場合は、エミュレーターに関連付けられた IP アドレスを取得する必要があります。ここでは、エミュレーターに関連付けられた IP アドレスを取得する方法を説明します。

以下の手順に従って、エミュレーターがモック サービスをポイントするように設定します。

  1. まだ Windows Phone SDK 8.0 をインストールしていない場合はインストールします。

  2. VHD 上の読み取り専用フラグを削除します。

    1. エクスプローラーを開き、C:\Program Files (x86)\Microsoft SDKs\Windows Phone\v8.0\Emulation\Images に移動します。

    2. 各差分 VHD の読み取り専用属性を削除します。たとえば、Flash.480x800.vhd ファイルを右クリックし、[プロパティ] をクリックします。[読み取り専用] チェック ボックスをオフにして [OK] をクリックします。

  3. ディスクの管理を開きます。

    • [操作] を選択し、[VHD の接続] を選択して、コンピューターに新しい仮想ハード ドライブ (ディスク) をマウントします。

      使用するサポート対象解像度ごとに、この手順を繰り返します。

  4. 以下の手順を使用して、HOSTS ファイルが格納されている Windows パーティションを見つけます。

    1. エクスプローラーを使用して、[ドライブ]\Windows\System32\drivers\etc にある etc フォルダーに移動します。

    2. 管理者としてメモ帳を開きます。

    3. メモ帳で、エクスプローラーで見つけたパスに基づいて HOST ファイルを開きます。

    4. 次の形式に従って、HOST ファイルにエントリを追加します。

      #<エミュレーター モック サービスの IP アドレス> marketplaceedgeservice.windowsphone.com

      重要: 重要:

      モック サービスが正しく機能するように、必ずこの手順に従ってください。

    5. ファイルを保存します。ファイルを .txt ファイルとして保存しないでください。

  5. ディスクを右クリックし、[VHD の切断] をクリックすることによって、前に作成した VHD ディスクを切断します。

  6. 以下の手順に従って、Hyper-V マネージャーを使用して VHD のキャッシュされたコピーを削除します。

    1. Hyper-V マネージャーを起動します。

    2. ローカル コンピューターに接続します。

      仮想マシンの一覧が表示されます。Emulator WVGA.%computername% を探します。

    3. このエミュレーターを閉じていない場合は、[シャットダウン] を右クリックします。

    4. [削除] を右クリックします。

  7. Windows Phone アプリからエミュレーターを実行している場合は、前の HOST ファイルを更新した VHD と同じエミュレーターを実行していることを確認します。

手順 3: アプリで使用する製品カタログを構成する

関連付けられた XML を変更することによって、アプリ内購入の製品カタログを構成します。モック サービスが配置されているフォルダー内で iapcatalog.xml という名前の XML ファイルを探します。

モック サービスでは、XML を入力として使用します。このサービスは、アプリのディレクトリへのパスに基づいて、この XML ファイル (iapcatalog.xml) を読み取ります。

この XML の形式は次のとおりです。

<Catalog>
  <Item> 
    <ProductId>Test1</ProductId> <!—The unique Product Identifier -->
    <Title>Test Item 1</Title> 
    <Description>This is a test item</Description>
    <Type>iapconsumable</Type>
    <Tag>
      { Order: 1, Rewards: [ { Name: 'Credits', Quantity: 100 }, { Name: 'Coins', Quantity: 10000 } ] }
    </Tag>
  </Item>
</Catalog>

製品カタログ XML ファイルの要素の詳細については、「アプリ内製品のプロパティ」を参照してください。

手順 4: 特定のアプリ ID を使用するようにアプリ マニフェストを更新する

モック サービスと通信するために使用したアプリ ID をアプリが使用するように、マニフェスト ファイルを更新します。

Visual Studio で、この値を次のように更新します。

ee29a261-80d0-4bdf-89bd-28b1ebbc8bd3

アプリの実行

これで、テスト モードでアプリを実行できるようになりました。アプリは、Store サービスを呼び出す代わりに、モック サービスを呼び出します。

表示:
© 2014 Microsoft