Version: 2018.2
サムスン Galaxy IAP (アプリ内課金) 設定
プロダクトの定義

Codeless IAP

Codeless IAP は、Unity アプリケーションでアプリ内課金 (IAP) を実装する最も簡易な方法です。Unity エディターは、最小限のスクリプト作成で基本的な IAP インテグレーションを設定するためのインターフェースを提供します。

Codeless IAP は、コードを必要とせずに実際の IAP トランザクションを処理します。Codeless IAP の実装は、エディターを使用した以下のような 2 段階のプロセスです。

  1. IAP Buttons をゲームに設定します
  2. IAP CatalogProducts を定義します

Unity Purchasing システムは、カタログに加えたプロダクトをランタイムに設定します。プレイヤーが IAP Button を設定すると、関連するプロダクトの購買フローを始めます。

ノート: プレイヤーが新しく購入したコンテンツにアクセスする方法を定義するには、スクリプトを使用する必要があります。 詳細については、後述の 購買の処理 のセクションを参照してください。

Codeless IAP の実装

まず初めに最新の Unity IAP SDK をインストールします。詳しくは Unity IAP の設定 を参照してください。

シーンに IAP Buttons を加える

シーンに IAP Buttons を加えるには、Unity エディターで Window > Unity IAP > Create IAP Button の順に選択します。

Unity エディターで Codeless IAP Button を作成
Unity エディターで Codeless IAP Button を作成

IAP Catalog にプロダクトを加える

2 通りのうちの 1 つの方法で IAP Catalog GUI を開きます。

  • Window > Unity IAP > IAP Catalog の順に選択します。
  • または、IAP Button を選択し、インスペクターの IAP Button (Script) コンポーネントで IAP Catalog… をクリックします。
IAP Button スクリプトコンポーネントを通して IAP Catalog GUI にアクセスします
IAP Button スクリプトコンポーネントを通して IAP Catalog GUI にアクセスします

次に GUI を使ってカタログのそれぞれのプロダクトに以下の属性を定義します。

  • Product ID - これによって App Store と通信します (Advanced オプションを使って、この ID をストア専用の一意の ID でオーバーライドすることが可能です)。
  • Product Type (ConsumableNon-ConsumableSubscription)
IAP Catalog GUI でプロダクト情報を設定
IAP Catalog GUI でプロダクト情報を設定

ノートIAP Catalog GUI には、プロダクトを設定するための追加ツールが用意されています。それぞれのストアにアップロードする カタログをエクスポートする 前に、説明と価格情報も入力する必要があります。これらの設定の詳細については、プロダクトの定義 を参照してください。

UnityPurchasing を自動的に初期化する

アプリ内課金を使用するには、IAP SDK を初期化する必要があります。これは、ランタイムに Codeless IAP ButtonIAP Listener の最初のインスタンスが読み込まれると自動的に発生します。ただし、 IAP Button や IAP Listener がゲームに表示される前に SDK を初期化する必要があります (例えば、アプリケーションの起動後に IAP Promo オファーを提供するなど)。 このような場合は、 IAP Catalog ウィンドウの下部にある__Automatically initialize UnityPurchasing (recommended)__ にチェックマークを入れます。これにより、アプリケーションの起動時に UnityPurchasing が直ちに初期化され、コードレスインスタンスのライフサイクルの依存関係が排除されます。

IAP Catalog GUI を通して SDK の自動初期化を可能にします
IAP Catalog GUI を通して SDK の自動初期化を可能にします

作動するには、カタログに最低 1 つのプロダクトが必要です。

ノート: IAP Button や IAP Listener とまとめて自動初期化を使用できます。 この場合、SDK は、IAP Button や IAP Listener の最初のインスタンスがシーンにロードされる時ではなく、ゲームの開始時に初期化されます。ただし、スクリプトで手動でも初期化する場合は、自動初期化を有効にしないでください。エラーが発生する可能性があります。

購入処理

カタログに少なくとも 1 つの製品がある場合、購入が完了または失敗したときの IAP Button の動作を定義できます。

  1. シーンビューで IAP Button を選択し、インスペクターで IAP Button (Script) コンポーネントを開きます。
  2. IAP Button に紐づけるプロダクトを Product ID ドロップダウンから選択します。
  3. 購入処理を行う独自の関数を作成するか、処理を行うアセットをインポートします (後出のコードサンプルを参照)。
  4. ゲームオブジェクトに購入処理スクリプトをコンポーネントとしてアタッチします。 ゲームオブジェクトに購入処理をコンポーネントとしてアタッチ
  5. インスペクターの IAP Button (Script) コンポーネントに戻り、プラス (+) ボタンをクリックして On Purchase Complete (Product) に関数を加えます。
  6. 購入処理スクリプトをアタッチしたゲームオブジェクトを On Purchase Complete (Product) イベントフィールド (下図) にドラッグアンドドロップし、ドロップダウンから関数を選択します。 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 用にプロダクトカタログをエクスポートする手順は以下の通りです。

  1. IAP Catalog ウィンドウ (Window > Unity IAP > IAP Catalog) で各プロダクトに以下が定義されていることを確認します。
    * ID
    * Type
    * TitleDescription
    * Price または Pricing Template ID
  2. スクロールダウンして App Store Export を選択します。
  3. Google Play CSV を選択します。
  4. CSV ファイルの保存先を選択します。

エクスポートしたカタログを Google Play へアップロードするより詳しい情報は、Android デベロッパーサイトアプリ内課金の管理 を参照してください。

Apple iTunes

Apple 用にプロダクトカタログをエクスポートする手順は以下の通りです。

  1. IAP Catalog ウィンドウ (Window > Unity IAP > IAP Catalog) で各プロダクトに以下が定義されていることを確認します。

    * ID
    * Type
    * TitleDescription
    * Price TierScreenshot path
    * Apple SKU (iTunes Connect で確認できます)
    * Apple Team ID (Apple Developer ウェブサイト で確認できます)
  2. スクロールダウンして App Store Export を選択します。
  3. Apple XML Delivery を選択します。
  4. XML ファイルの保存先を選択します。

エクスポートしたカタログを Apple の Application Loader を使ってインポートする詳しい情報は、の iTunes Connect ウェブサイトApplication Loader の使用 を参照してください。

Restore (リストア) ボタン

iTunes を含む一部のアプリケーションストアでは、アプリケーションに Restore ボタンを加える必要があります。 Codeless IAP を使用すると、Restore ボタンをアプリケーションに簡単に実装できます。

Restore ボタンは以下の手順で設置します。

  1. シーンに IAP Button を加えます (Window > Unity IAP > Create IAP Button)。
  2. IAP Button を選択した状態で、インスペクターで IAP Button (Script) コンポーネントを開き、Button Type ドロップダウンから Restore を選択します (コンポーネントの他のフィールドの大半はインスペクターに非表示になります)。 購入をリストアする IAP ボタンの設定

ユーザーがランタイムにこのボタンを選択すると、ボタンは使用中のストアの購入をリストアする API を呼び出します。 この機能は、iOS App Store、Mac App Store、Windows Store、Samsung Apps、Cloud Moolah App Store で使用できます。他のプラットフォームでは Restore ボタンを非表示にする場合があります。

リストアが成功すると、Unity IAP はそのプロダクトに紐づけられている IAP ButtonOn Purchase Complete (Product) 関数を呼び出します。

詳細については、 トランザクションのリストア を参照してください。

IAP Listeners

Codeless IAP は、成功した購入イベントと失敗した購入イベントをシーン階層内のアクティブな IAP Button コンポーネントに送信します。ただし、成功した購入を処理するときにアクティブな IAP Button を持つことが困難、または望ましくない場合があります。例えば、購入が完了する前に中断された場合、Unity IAP は次の初期化時に購入を再度処理しようとします。アプリケーションが起動した直後にこれを実行したい場合、 IAP Button は適切な方法とは言えません。Codeless IAP には、まさにこのような場合のための IAP Listener コンポーネントが含まれています。シーン階層のアクティブな IAP Listener は、IAP Button に割り当てできないすべての購入イベントを受け取ります。

IAP Listener は以下の手順で設定します。

  1. Unity エディターで Window > Unity IAP > Create IAP Listener の順に選択します。
  2. ゲームオブジェクトのコンポーネントとして購入処理スクリプトを作成する 手順を行います。
  3. シーンの IAP Listener を選択し、インスペクターの IAP Listener (Script) コンポーネントを開き、プラス (+) ボタンをクリックして On Purchase Complete (Product) に関数を加えます。
  4. 購入処理スクリプトをアタッチしたゲームオブジェクトをコンポーネントのインスペクターのイベントフィールドにドラッグアンドドロップし、ドロップダウンから関数を選択します。 例外処理のために IAP Listener を設定

UnityIAP の拡張機能

Codeless IAP 機能で、Unity IAP の 拡張機能 のほとんどは公開されていません。ただし、Codeless IAP は既存のスクリプティング API の上に実装されているため、ニーズに合わせて IAPButton.cs (Assets/Plugins/UnityPurchasing/script/IAPButton.cs) スクリプトで多くの機能を変更できます。

Unity IAP の拡張機能を使用するには、IStoreListener.OnInitialize に返される Unity IAP の IStoreControllerIExtensionProvider インスタンスにアクセスします。


サムスン Galaxy IAP (アプリ内課金) 設定
プロダクトの定義