アプリ内製品購入の有効化 (HTML)
[ この記事は、Windows ランタイム アプリを作成する Windows 8.x および Windows Phone 8.x 開発者を対象としています。Windows 10 向けの開発を行っている場合は、「最新のドキュメント」をご覧ください]
アプリでは、ユーザーがアプリ内から購入できるように、製品や機能を販売することができます。ここでは、アプリ内で機能を販売できるようにする方法について説明します。
ユーザーがアプリ内製品を購入できるのは、完全バージョンのアプリを購入した場合のみです。
理解しておく必要があること
テクノロジ
- Windows Runtime
- Windows.ApplicationModel.Store
必要条件
- ユーザーが購入できる機能を追加する Windows ランタイム アプリ。
手順
ステップ 1: アプリのライセンス情報を初期化する
アプリを初期化するときに、CurrentApp または CurrentAppSimulator を初期化することでアプリの LicenseInformation オブジェクトを取得し、アプリ内製品の購入を有効にします。
function appInit()
{
// some app initialization functions
// Get current product object
// Execute only one of these statements.
// The next line is commented out for testing.
// currentApp = Windows.ApplicationModel.Store.CurrentApp;
// The next line is commented out for production/release.
currentApp = Windows.ApplicationModel.Store.CurrentAppSimulator;
// We should have either a real or a simulated CurrentProduct object here.
// Get the license info
licenseInformation = currentApp.licenseInformation;
// other app initializations function
}
注 新しいアプリ内製品のコード記述やテストを初めて行うときは、CurrentApp オブジェクトではなく、CurrentAppSimulator オブジェクトを使う必要があります。そうすることで、実稼働サーバーを呼び出すのではなく、ライセンス サーバーへのシミュレートされた呼び出しを使って、ライセンス ロジックを検証できます。そのためには、%userprofile%\AppData\local\packages\<package name>\LocalState\Microsoft\Windows Store\ApiData で "WindowsStoreProxy.xml" という名前のファイルをカスタマイズする必要があります。このファイルは、アプリを初めて実行するときに Microsoft Visual Studio シミュレーターによって作られます。カスタマイズされたファイルを実行時に読み込むこともできます。詳しくは、CurrentAppSimulator のドキュメントをご覧ください。
ステップ 2: アプリにアプリ内製品の販売を追加する
アプリ内製品によって提供する機能ごとに、販売を作り、アプリに追加します。
重要 ストアにアプリを提出する前に、ユーザーに提供するすべてのアプリ内製品をアプリに追加する必要があります。新しいアプリ内製品を後から追加する場合は、アプリを更新し、新しいバージョンを再提出する必要があります。
アプリ内販売トークンを作成する
アプリの各アプリ内製品は、トークンで識別します。このトークンは開発者が定義する文字列であり、アプリ内とストア内で、特定のアプリ内製品を識別するために使われます。アプリに固有のわかりやすい名前を付けて、その機能をコードの記述中に簡単に識別できるようにしてください。たとえば、次のような名前を付けます。
- "SpaceMissionLevel4"
- "ContosoCloudSave"
- "RainbowThemePack"
条件ブロック内に機能のコードを記述する
アプリ内製品の対象となる各機能のコードは、その機能を使うためのライセンスをユーザーが持っているかどうかをテストする条件ブロック内に記述する必要があります。
次の例は、ライセンス固有の条件ブロック内に featureName という名前の製品機能のコードを記述する方法を示しています。featureName という文字列は、アプリ内でこの製品を一意に識別するトークンであり、ストアでも識別用に使われます。
if (licenseInformation.productLicenses.lookup("featureName").isActive) { // the customer can access this feature } else { // the customer can't access this feature }
この機能の購入 UI を追加する
アプリには、アプリ内製品で提供される製品または機能をユーザーが購入するための方法も用意する必要があります。ユーザーは、完全なアプリを購入したときのように、ストアを通じてそれらの製品または機能を購入することはできません。
次の例は、ユーザーが既にアプリ内製品を所有しているかどうかをテストし、所有していない場合は購入できるように購入用ダイアログを表示する方法を示しています。"show the purchase dialog" というコメントを、購入用ダイアログの独自のコードに置き換えてください (わかりやすい [このアプリを購入] ボタンなど)。
function buyFeature1() { if (!licenseInformation.productLicenses.lookup("featureName").isActive) { // The customer doesn't own this feature, so // show the purchase dialog. // note: currentApp is a reference to CurrentAppSimulator from a previous declaration currentApp.requestProductPurchaseAsync("featureName", false).then( function () { //Check the license state to determine if the in-app purchase was successful. }, function () { // The in-app purchase was not completed because // there was an error. }); } else { // The customer already owns this feature. } }
ステップ 3: テスト コードを最終的な呼び出しに変更する
この手順は簡単です。アプリのコード内の CurrentAppSimulator への参照をすべて CurrentApp への参照に変えます。WindowsStoreProxy.xml ファイルは不要になるので、アプリのパスから削除します (ただし、次の手順でアプリ内販売を構成するときの参照用に保存しておくことをお勧めします)。
ステップ 4: ストアでアプリ内製品を構成する
アプリをストアに提出する前に、各アプリ内製品を [アプリの提出] ワークフローに追加します。ここで、アプリ内製品のトークン、価格、機能の有効期間を指定します。テストのときに WindowsStoreProxy.xml で設定した構成と同じ構成になっていることを確認してください。
ステップ 5: ストアでアプリ内製品について説明する
アプリの提出の際に、ストアにアプリのパッケージをアップロードした後、[説明] ページで、各アプリ内製品の説明を入力できます。アプリが複数の言語をサポートしている場合は、サポートされているすべての言語で各アプリ内製品を説明する必要があります。
アプリ内製品によってアプリに追加される機能についての正確な説明を、明確に、具体的に記述してください。アプリの本来の機能のほかにどのような製品価値が得られるかが明確になっていなければ、ユーザーに購入してもらうのは難しいでしょう。アプリ内製品の説明の具体的な部分について詳しくは、「アプリの説明」をご覧ください。
注釈
コンシューマブルなアプリ内購入オプションを顧客に提供することに関心がある場合は、「コンシューマブルなアプリ内製品購入の有効化」をご覧ください。
ユーザーがアプリ内製品を購入したことを確認するために通知を使う必要がある場合は、「通知を使った製品購入の確認」を確認してください。