アプリ内購入 (IAP) を使用するには、アプリケーション内で販売するプロダクトのリストを提供する必要があります。スクリプトを使用するか、IAP Catalog (Window > Unity IAP > IAP Catalog) を使用してこれを実行できます。いずれの方法で実装する場合でも、各プロダクトに適切な属性を定義する必要があります。このページではこれらの属性について詳しく説明します。
異なるプラットフォームで認識可能な (全プラットフォーム共通の) 一意の ID を入力します。この ID は、アプリケーションストアと通信するときに製品のデフォルト ID として使用されます。
ノート: ID には半角のアルファベット、数字、アンダースコア、ピリオドのみを使用できます。
プロダクトのタイプには以下の 3 つがあります。
タイプ | Description | 例 |
---|---|---|
Consumable | 繰り返し購入できるプロダクトです。Consumable (消費型) のプロダクトはリストア (復元) できません。 | * 仮想通貨 * ヘルスポーション * 一時的パワーアップ |
Non-Consumable | 1 度だけしか購入できないプロダクトです。Non-Consumable (非消費型) のプロダクトはリストア (復元) 可能です。 | * 武器、防具 * 追加コンテンツへのアクセス |
Subscription | 限られた期間使用できるプロダクトです。Subscription (サブスクリプション) プロダクトはリストア (復元) 可能です。 | * 1 か月間アクセスが有効なオンラインゲーム * 毎日ボーナスが付与される VIP ステータス * 無料トライアル |
ノート: Subsctiption タイプのサポートに関する詳細は サブスクリプションプロダクトサポート を参照してください。
このセクションでは IAP で使用するプロダクト関連のメタデータを定義します。
以下のフィールドを利用してプロダクトの説明を加えます。
フィールド | データ型 | Description | 例 |
---|---|---|---|
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 以降でのみ利用可能です。
フィールド | データ型 | Description | 例 |
---|---|---|---|
Type | Enum | 購入者が受け取るコンテンツのタイプを定義します | * Currency (通貨) * Item (アイテム) * Resource (リソース) * Other (その他) |
Subtype | 文字列 | コンテンツのタイプをさらに細分化します | * Currency タイプのサブタイプとして Gold (金貨) と Silver (銀貨) * Item タイプのサブタイプとして Potion (ポーション) と Boost (ブースト) |
Quantity | Int | 払い出しで購入者が受け取るアイテム、通貨、などの数を指定します | * 1 * >25 * 100 |
Data | このフィールドは、コード内で参照するプロパティとして自由に使用できます | * UI エレメントのフラグ * 珍しいアイテム |
ノート: 1 つのプロダクトに複数の Payouts を加えることができます。
PayoutDefinition クラスの詳細は、スクリプトリファレンス を参照してください。このクラスを使用すると、以下の例のようにスクリプトで払い出し情報をプロダクトに追加できます。
using UnityEngine.Purchasing;
new PayoutDefinition (PayoutType.Currency, "Gold", 100)
IAP Catalog は、在庫管理というよりは、プロダクトカタログのディクショナリのような働きをします。そのため、別途、購入されたコンテンツの流れを処理するコードの実装が必要です。
デフォルトで、プロダクトはすべてのアプリストアで同じ ID (上の ID フィールドで指定) を持っていると、Unity IAP は仮定します。可能な限りそうすることが推奨されます。ただし、これが不可能な場合があります。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}
});
// Unity IAP を初期化...
}
}
この例では、Google Play 用の ID を 100_gold_coins_google、Apple App Store 用の ID を 100_gold_coins_mac と設定しています。
注意: Store ID Overrides で変更した ID は、アプリケーションストアと通信するときにのみ使用されます。ですから、API の呼び出しを行うときは全プラットフォーム共通の ID を使用する必要があります。
ノート: ID には半角のアルファベット、数字、アンダースコア、ピリオドのみを使用できます。
プロダクトの値段、または、Google Play で作成した Pricing Template の ID を入力します。
Price Tier ドロップダウンから価格ティアを選択します。Unity は定義済みの Apple の価格帯をサポートしますが、任意の値はサポートしません。
アップロードするには Select a screenshot を選択します。
スクリーンショットの仕様については、Apple のパブリッシャーサポートドキュメントを参照してください。
Price Tier ドロップダウンから価格ティア (中国元) を選択します。Unity は定義済みの Xiaomi の価格帯をサポートしますが、任意の値はサポートしません。Xiaomi の IAP Catalog のパブリッシュに関して詳しくは、Xiaomi インテグレーションガイド を参照してください。
スクリプトによるプロダクトの定義 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);
// Unity IAP を初期化...
}
}