Codeless IAP は、Unity アプリケーションでアプリ内課金 (IAP) を実装する最も簡易な方法です。Unity エディターは、最小限のスクリプト作成で基本的な IAP インテグレーションを設定するためのインターフェースを提供します。
Codeless IAP は、コードを必要とせずに実際の IAP トランザクションを処理します。Codeless IAP の実装は、エディターを使用した以下のような 2 段階のプロセスです。
Unity Purchasing システムは、カタログに加えたプロダクトをランタイムに設定します。プレイヤーが IAP Button を設定すると、関連するプロダクトの購買フローを始めます。
ノート: プレイヤーが新しく購入したコンテンツにアクセスする方法を定義するには、スクリプトを使用する必要があります。 詳細については、後述の 購買の処理 のセクションを参照してください。
まず初めに最新の Unity IAP SDK をインストールします。詳しくは Unity IAP の設定 を参照してください。
シーンに IAP Buttons を加えるには、Unity エディターで Window > Unity IAP > Create IAP Button の順に選択します。
2 通りのうちの 1 つの方法で IAP Catalog GUI を開きます。
次に GUI を使ってカタログのそれぞれのプロダクトに以下の属性を定義します。
ノート: IAP Catalog GUI には、プロダクトを設定するための追加ツールが用意されています。それぞれのストアにアップロードする カタログをエクスポートする 前に、説明と価格情報も入力する必要があります。これらの設定の詳細については、プロダクトの定義 を参照してください。
UnityPurchasing
を自動的に初期化するアプリ内課金を使用するには、IAP SDK を初期化する必要があります。これは、ランタイムに Codeless IAP Button か IAP Listener の最初のインスタンスが読み込まれると自動的に発生します。ただし、 IAP Button や IAP Listener がゲームに表示される前に SDK を初期化する必要があります (例えば、アプリケーションの起動後に IAP Promo オファーを提供するなど)。 このような場合は、 IAP Catalog ウィンドウの下部にあるAutomatically initialize UnityPurchasing (recommended) にチェックマークを入れます。これにより、アプリケーションの起動時に UnityPurchasing
が直ちに初期化され、コードレスインスタンスのライフサイクルの依存関係が排除されます。
作動するには、カタログに最低 1 つのプロダクトが必要です。
ノート: IAP Button や IAP Listener とまとめて自動初期化を使用できます。 この場合、SDK は、IAP Button や IAP Listener の最初のインスタンスがシーンにロードされる時ではなく、ゲームの開始時に初期化されます。ただし、スクリプトで手動でも初期化する場合は、自動初期化を有効にしないでください。エラーが発生する可能性があります。
カタログに少なくとも 1 つの製品がある場合、購入が完了または失敗したときの IAP Button の動作を定義できます。
購入処理スクリプトサンプル
public void GrantCredits (int credits){
userCredits = userCredits + credits;
Debug.Log("You received " + credits " Credits!");
}
ゲームを実行し、IAP Button を使ってテストします。
購入を行うためには、対応するアプリケーションストアでカタログを設定する必要があります。これを行うには、プロダクトカタログを CSV ファイルとして Google Play にエクスポートするか、XML ファイルとして Apple の Application Loader を通して iTunes Store にエクスポートします。
Google Play 用にプロダクトカタログをエクスポートする手順は以下の通りです。
エクスポートしたカタログを Google Play へアップロードするより詳しい情報は、Android デベロッパーサイト の アプリ内課金の管理 を参照してください。
Apple 用にプロダクトカタログをエクスポートする手順は以下の通りです。
エクスポートしたカタログを Apple の Application Loader を使ってインポートする詳しい情報は、の iTunes Connect ウェブサイト の Application Loader の使用 を参照してください。
iTunes を含む一部のアプリケーションストアでは、アプリケーションに Restore ボタンを加える必要があります。 Codeless IAP を使用すると、Restore ボタンをアプリケーションに簡単に実装できます。
Restore ボタンは以下の手順で設置します。
ユーザーがランタイムにこのボタンを選択すると、ボタンは使用中のストアの購入をリストアする API を呼び出します。 この機能は、iOS App Store、Mac App Store、Windows Store、Samsung Apps、Cloud Moolah App Store で使用できます。他のプラットフォームでは Restore ボタンを非表示にする場合があります。
リストアが成功すると、Unity IAP はそのプロダクトに紐づけられている IAP Button で On Purchase Complete (Product) 関数を呼び出します。
詳細については、 トランザクションのリストア を参照してください。
Codeless IAP は、成功した購入イベントと失敗した購入イベントをシーン階層内のアクティブな IAP Button コンポーネントに送信します。ただし、成功した購入を処理するときにアクティブな IAP Button を持つことが困難、または望ましくない場合があります。例えば、購入が完了する前に中断された場合、Unity IAP は次の初期化時に購入を再度処理しようとします。アプリケーションが起動した直後にこれを実行したい場合、 IAP Button は適切な方法とは言えません。Codeless IAP には、まさにこのような場合のための IAP Listener コンポーネントが含まれています。シーン階層のアクティブな IAP Listener は、IAP Button に割り当てできないすべての購入イベントを受け取ります。
IAP Listener は以下の手順で設定します。
Codeless IAP 機能で、Unity IAP の 拡張機能 のほとんどは公開されていません。ただし、Codeless IAP は既存のスクリプティング API の上に実装されているため、ニーズに合わせて IAPButton.cs (Assets/Plugins/UnityPurchasing/script/IAPButton.cs) スクリプトで多くの機能を変更できます。
Unity IAP の拡張機能を使用するには、IStoreListener.OnInitialize
に返される Unity IAP の IStoreController
と IExtensionProvider
インスタンスにアクセスします。
Did you find this page useful? Please give it a rating:
Thanks for rating this page!
What kind of problem would you like to report?
Thanks for letting us know! This page has been marked for review based on your feedback.
If you have time, you can provide more information to help us fix the problem faster.
Provide more information
You've told us this page needs code samples. If you'd like to help us further, you could provide a code sample, or tell us about what kind of code sample you'd like to see:
You've told us there are code samples on this page which don't work. If you know how to fix it, or have something better we could use instead, please let us know:
You've told us there is information missing from this page. Please tell us more about what's missing:
You've told us there is incorrect information on this page. If you know what we should change to make it correct, please tell us:
You've told us this page has unclear or confusing information. Please tell us more about what you found unclear or confusing, or let us know how we could make it clearer:
You've told us there is a spelling or grammar error on this page. Please tell us what's wrong:
You've told us this page has a problem. Please tell us more about what's wrong:
Thank you for helping to make the Unity documentation better!
Your feedback has been submitted as a ticket for our documentation team to review.
We are not able to reply to every ticket submitted.