アプリ内購入 (IAP) を使用するには、アプリケーション内で販売するプロダクトのリストを提供する必要があります。これを行うにはスクリプトを使用するか、Codeless IAP Catalog (Window > Unity IAP > IAP Catalog) を使用します。いずれの方法で実装する場合でも、各プロダクトに適切な属性を定義する必要があります。このページではこれらの属性について詳しく説明します。
異なるプラットフォームで認識可能な (全プラットフォーム共通の) 一意の ID を入力します。この ID は、アプリケーションストアと通信するときに製品のデフォルト ID として使用されます。
重要: ID には小文字のアルファベット、数字、アンダースコア、ピリオドのみを使用できます。
プロダクトのタイプには以下の 3 つがあります。
| タイプ | 説明 | 例 |
|---|---|---|
| Consumable | 繰り返し購入できるプロダクトです。Consumable (消費型) プロダクトは復元できません。 | * 仮想通貨 * ヘルスポーション * 一時的なパワーアップ |
| Non-Consumable | 1 度だけしか購入できないプロダクトです。Non-Consumable (非消費型) のプロダクトは復元可能です。 | * 武器または鎧 * 追加コンテンツへのアクセス |
| Subscription | 限られた期間使用できるプロダクトです。Subscription (サブスクリプション) プロダクトは復元可能です。 | * オンラインゲームへの月次アクセス * 毎日のボーナスを付与する VIP ステータス * 無料トライアル |
ノート: サブスクリプションタイプのサポートに関する詳細は、サブスクリプションプロダクトサポート を参照してください。
このセクションでは IAP で使用するプロダクト関連のメタデータを定義します。
以下のフィールドを利用してプロダクトの説明を加えます。
| フィールド | データ型 | 説明 | 例 |
|---|---|---|---|
| Locale | Enum | 属する地域で使用可能なアプリケーションストアを定義します | English (U.S.) (Google Play,Apple) |
| Title | 文字列 | アプリケーションストアで表示されるプロダクト名 | Health Potion (ヘルスポーション) |
| Product Description | 文字列 | アプリケーションストアで表示されるプロダクトの叙述文で、どんなプロダクトであるか説明されることが多い。 | Restores 50 HP (50 HP 回復します) |
プラス (+) アイコンをクリックして追加の地域を選択し、Translations の Title と Description フィールドを追加します。翻訳はいくつでも追加できます。
このセクションを使用して、購入者に払い出しするコンテンツのローカルの固定定義を加えます。Payouts は、ゲーム内のウォレットや在庫の管理を容易にします。プロダクトに名前と数量のラベルを付けることによって、購入発生時に開発者はゲーム内の特定のタイプのアイテム数をすばやく調整できます (例えば、コインや宝石)。
ノート: この機能は Unity 2017.2 以降でのみ利用可能です。
| フィールド | データ型 | 説明 | 例 |
|---|---|---|---|
| Type | Enum | 購入者が受け取るコンテンツのカテゴリを定義します4 つのタイプがあります。 | * Currency * Item * Resource * Other |
| Subtype | 文字列 | コンテンツのタイプをさらに細分化します | * Currency タイプのサブタイプとして “Gold”、“Silver” * Item タイプのサブタイプとして “Potion”、“Boost” |
| Quantity | Int | 払い出しで購入者が受け取るアイテム、通貨、などの数を指定します | * 1 * >25 * 100 |
| データ | |||
| このフィールドは、コード内で参照するプロパティとして自由に使用できます | * UI 要素のフラグ * アイテムのレア度 |
ノート: 1 つのプロダクトに複数の Payouts を追加することができます。
PayoutDefinition クラスの詳細については、スクリプトリファレンス を参照してください。このクラスを使用して、いつでもスクリプトでプロダクトに払い出し情報を追加できます。 例:
using UnityEngine.Purchasing;
new PayoutDefinition (PayoutType.Currency, "Gold", 100)
IAP Catalog は、在庫管理というよりは、プロダクトカタログのディクショナリのような働きをします。そのため、別途、購入されたコンテンツの流れを処理するコードの実装が必要です。
デフォルトでは、Unity IAP は、プロダクトはすべてのアプリストアで同じ識別子 (上部 ID フィールドで指定) を使用していると仮定します。Unity では、可能な限りこれに従うことを推奨しています。ただし、これができない場合もあります。例えば、iOS と Mac ストアで公開する場合、開発者が同じプロダクトID を使用することは禁止されています。
このような場合は、Overrides フィールドを使用して、全プラットフォーム共通 ID と異なるプロダクト ID を指定します。
以下のように、コードでも同じことができます。
using UnityEngine;
using UnityEngine.Purchasing;
public class MyIAPManager {
public MyIAPManager () {
var builder = ConfigurationBuilder.Instance(StandardPurchasingModule.Instance());
builder.AddProduct("100_gold_coins", ProductType.Consumable, new IDs
{
{"100_gold_coins_google", GooglePlay.Name},
{"100_gold_coins_mac", MacAppStore.Name}
});
// Initialize Unity IAP...
}
}
この例では、Google Play 用の ID を 100_gold_coins_google、Apple App Store 用の ID を 100_gold_coins_mac と設定しています。
ノート: Overrides で変更される ID は、Unity IAP がアプリストアとの通信時に使用する ID のみです。そのため、API の呼び出しを行うときはプロダクトのクロスプラットフォーム ID を使用する必要があります。
重要: ID には小文字のアルファベット、数字、アンダースコア、ピリオドのみを使用できます。
プロダクトの価格、または Google Playで作成した 価格設定テンプレート の ID を入力します。
Price Tier ドロップダウンメニューから価格ティアを選択します。Unity は定義済みの Apple の価格帯をサポートしますが、任意の値はサポートしません。
アップロードするには Select a screenshot を選択します。
スクリーンショットの仕様については、Apple のパブリッシャーサポートドキュメントを参照してください。
Purchasing Configuration Builder を使用してコードでプロダクトリストを設定することもできます。これには、各プロダクトの一意の Product ID と Product Type が必要です。
using UnityEngine;
using UnityEngine.Purchasing;
public class MyIAPManager {
public MyIAPManager () {
var builder = ConfigurationBuilder.Instance(StandardPurchasingModule.Instance());
builder.AddProduct("100_gold_coins", ProductType.Consumable);
// Initialize Unity IAP...
}
}