Version: 2021.3
言語: 日本語
Codeless IAP
サブスクリプションプロダクトサポート

プロダクトの定義

アプリ内購入 (IAP) を使用するには、アプリケーション内で販売するプロダクトのリストを提供する必要があります。スクリプトを使用するか、IAP Catalog (Window > Unity IAP > IAP Catalog) を使用してこれを実行できます。いずれの方法で実装する場合でも、各プロダクトに適切な属性を定義する必要があります。このページではこれらの属性について詳しく説明します。

Unity エディターの IAP Catalog ウィンドウ
Unity エディターの IAP Catalog ウィンドウ

ID

異なるプラットフォームで認識可能な (全プラットフォーム共通の) 一意の ID を入力します。この ID は、アプリケーションストアと通信するときに製品のデフォルト ID として使用されます。

ノート: ID には半角のアルファベット、数字、アンダースコア、ピリオドのみを使用できます。

Type

プロダクトのタイプには以下の 3 つがあります。

タイプ 説明
Consumable 繰り返し購入できるプロダクトです。Consumable (消費型) のプロダクトはリストア (復元) できません。 * 仮想通貨
* ヘルスポーション
* 一時的パワーアップ
Non-Consumable 1 度だけしか購入できないプロダクトです。Non-Consumable (非消費型) のプロダクトはリストア (復元) 可能です。 * 武器、防具
* 追加コンテンツへのアクセス
Subscription 限られた期間使用できるプロダクトです。Subscription (サブスクリプション) プロダクトはリストア (復元) 可能です。 * 1 か月間アクセスが有効なオンラインゲーム
* 毎日ボーナスが付与される VIP ステータス
* 無料トライアル

ノート: Subsctiption タイプのサポートに関する詳細は サブスクリプションプロダクトサポート を参照してください。

Advanced

このセクションでは IAP で使用するプロダクト関連のメタデータを定義します。

Descriptions

以下のフィールドを利用してプロダクトの説明を加えます。

フィールド データ型 説明
Locale Enum 属する地域で使用可能なアプリケーションストアを定義します English (U.S.) (Google Play,Apple)
Title 文字列 アプリケーションストアで表示されるプロダクト名 Health Potion (ヘルスポーション)
Product Description 文字列 アプリケーションストアで表示されるプロダクトの叙述文で、どんなプロダクトであるか説明されることが多い。 Restores 50 HP (50 HP 回復します)

プラス (+) アイコンをクリックして追加の地域を選択し、Translations (翻訳) の TitleDescription フィールドを加えます。

IAP Catalog ウィンドウ。プロダクトの Descriptions セクション
IAP Catalog ウィンドウ。プロダクトの Descriptions セクション

Payouts

このセクションを使用して、購入者に払い出しするコンテンツのローカルの固定定義を加えます。Payouts は、ゲーム内のウォレットや在庫の管理を容易にします。プロダクトに名前と数量のラベルを付けることによって、購入発生時に開発者はゲーム内の特定のタイプのアイテム数をすばやく調整できます (例えば、コインや宝石)。

ノート: この機能は Unity 2017.2 以降でのみ利用可能です。

フィールド データ型 説明
Type Enum 購入者が受け取るコンテンツのタイプを定義します * Currency (通貨)
* Item (アイテム)
* Resource (リソース)
* Other (その他)
Subtype 文字列 コンテンツのタイプをさらに細分化します * Currency タイプのサブタイプとして Gold (金貨) と Silver (銀貨)
* Item タイプのサブタイプとして Potion (ポーション) と Boost (ブースト)
Quantity Int 払い出しで購入者が受け取るアイテム、通貨、などの数を指定します * 1
* >25
* 100
Data このフィールドは、コード内で参照するプロパティとして自由に使用できます * UI エレメントのフラグ
* 珍しいアイテム
IAP Catalog ウィンドウ。プロダクトの Payouts セクション
IAP Catalog ウィンドウ。プロダクトの Payouts セクション

ノート: 1 つのプロダクトに複数の Payouts を加えることができます。

PayoutDefinition クラスの詳細は、スクリプトリファレンス を参照してください。このクラスを使用すると、以下の例のようにスクリプトで払い出し情報をプロダクトに追加できます。

using UnityEngine.Purchasing;

new PayoutDefinition (PayoutType.Currency, "Gold", 100)

IAP Catalog は、在庫管理というよりは、プロダクトカタログのディクショナリのような働きをします。そのため、別途、購入されたコンテンツの流れを処理するコードの実装が必要です。

Store ID Overrides

デフォルトで、プロダクトはすべてのアプリストアで同じ 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 Configuration (Google Play エクスポートに必要)

プロダクトの値段、または、Google Play で作成した Pricing Template の ID を入力します。

IAP Catalog ウィンドウ。プロダクトの Google Configuration セクション
IAP Catalog ウィンドウ。プロダクトの Google Configuration セクション

Apple Configuration (Apple エクスポートに必要)

Price Tier ドロップダウンから価格ティアを選択します。Unity は定義済みの Apple の価格帯をサポートしますが、任意の値はサポートしません。

アップロードするには Select a screenshot を選択します。

スクリーンショットの仕様については、Apple のパブリッシャーサポートドキュメントを参照してください。

IAP Catalog ウィンドウ。プロダクトの Apple Configuration セクション
IAP Catalog ウィンドウ。プロダクトの Apple Configuration セクション

スクリプトによるプロダクトの定義 Purchasing Configuration Builder を使用してコードでプロダクトリストを設定することもできます。これには、各プロダクトの一意の Product IDProduct 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 を初期化...
    }
}

  • 2018–06–12 修正されたページ
Codeless IAP
サブスクリプションプロダクトサポート