アプリケーションでは、販売するプロダクトの一覧を提出しなければなりません。コードを使ってアプリケーション内で行うことができます。
プロダクトは以下の 3 種類に別れます。
Consumable | 繰り返し購入することができるタイプ。仮想通貨のような消費型アイテムに適しています。復元することはできません。 |
NonConsumable | 一度のみ購入できるタイプ。ステージの追加など条件のスイッチのようなものに適しています。復元することができます。 |
Subscription | 定期購入することができるタイプ。復元することができます。 |
ConfigurationBuilder を使ってプロダクトリストをプログラムで宣言できます。
すべてのプロダクトに対して一意のストア共通 ID と前述のプロダクトタイプを提示します。
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 を初期化...
}
}
デフォルトでは、Unity IAP は、プロダクトはすべてのアプリストアで同じ ID を使用していると仮定します。
例えば、前述の例では、Unity IAP はどのアプリストアと通信するときでも “100_gold_coins” の ID を使用します。
同じプロダクト ID をすべてのストアで使用することができない場合もあります。例えば、iOS と Mac ストアでパブリッシングするときに開発者が同じプロダクトID を使用することは禁止されています。
このような場合、Unity IAP に (プラットフォーム共通 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 では “100_gold_coins_google”、Mac App Store では “100_gold_coins_mac” で示されています。
可能な限り、すべてのストアで同じプロダクト ID を使用することが推奨されます。
定義している各ストアのプロダクト ID を変更しても Unity からストアに通信を行うときは、Unity IAP で定義したプロダクト ID を使用するようにしてください。API の呼び出しを行うときはクロスプラットフォームに対応したプロダクト ID を使用し続ける必要があります。