注意: IAP Promo を使用するには、Unity Ads を初期化する前に Unity IAP を初期化する必要があります。
このインテグレーションガイドは 4 つの主要な手順を説明します。
IAP Promo を利用するには、次の設定が必要です。
IAP Promo を利用するには、サポートされているバージョンの Unity IAP SDK (1.17 以降) が必要です。最新の IAP SDK を入手するには、サービスウィンドウで In-App Purchasing を有効にする (Window > Services) か、Asset Store からインポートします。Service ウィンドウから有効にする場合は、プロンプトが表示されたら、必ず Asset パッケージを Import を選択してください。
詳細については IAP の設定 を参照してください。
IAP Promo には、サポートされているバージョンの Unity Ads SDK が必要です。Unity では、Asset Store からインポートして、最新の Ads SDK(3.0 以降) を入手することをお勧めします。
詳細については Unity Ads の設定 を参照してください。
これらの必要な Services が設定されると、ゲームに実装できます。
IAP の初期化にはコードレスとスクリプティングの2つの選択肢があります。
Codeless IAP は初期化の処理を行います。Codeless IAP の初期化を利用する場合は、Unity Ads の初期化メソッドをコード内で呼び出す必要があります。
Codeless IAP を使うには Product Catalog を入力し、カタログを取得するために IAP Listener を作成します。
エディター内で Window > UnityIAP > IAP Catalog を選択し、IAP Catalog ウィンドウを開きます。このウィンドウは以前の Products の設定がすべて記載されています。Product Catalog には少なくとも 1 つの Product が設定されている必要があります。Products を設定するための詳しい手順については Codeless IAP のドキュメントを参照してください。
IAP Catalog ウィンドウで App Store Export > Cloud JSON を選択し、Product Catalog のローカルコピーをエクスポートします。
IAP Listener を作成します。Window > Unity IAP > Create IAP Listener を選択し、ゲームの最初のシーンにこれを追加します。このリスナーは Product Catalog をゲーム起動時に取得します。これによって Promotions がリクエストされる際のエラーは回避できますが、コードレスボタンがシーンに現れていないため、Product はまだ準備が完了していません。
Codeless IAP を使用しない場合は、スクリプトを使って 手動で UnityIAP を初期化する 必要があります。以下のコードサンプルを参照してください。
using UnityEngine;
using UnityEngine.Purchasing;
public class IAPManager : MonoBehaviour, IStoreListener {
private IStoreController controller;
//次のプロダクトは、エディターの Product Catalog に加える必要があります。
private const string coins100 = "100.gold.coins";
private const string coins500 = "500.gold.coins";
public int coin_count = 0;
void Awake () {
StandardPurchasingModule module = StandardPurchasingModule.Instance ();
ProductCatalog catalog = ProductCatalog.LoadDefaultCatalog ();
ConfigurationBuilder builder = ConfigurationBuilder.Instance (module);
IAPConfigurationHelper.PopulateConfigurationBuilder (ref builder, catalog);
UnityPurchasing.Initialize (this, builder);
}
public void OnInitialized (IStoreController controller, IExtensionProvider extensions) {
this.controller = controller; Debug.Log ("Initialization Successful");
}
public void OnInitializeFailed(InitializationFailureReason error) {
Debug.Log ("UnityIAP.OnInitializeFailed (" + error + ")")
}
public void OnPurchaseFailed (Product item, PurchaseFailureReason reason) {
Debug.Log("UnityIAP.OnPurchaseFailed (" + item + ", " + reason + ")");
}
public PurchaseProcessingResult ProcessPurchase (PurchaseEventArgs e) {
string purchasedItem = e.purchasedProduct.definition.id;
switch (purchasedItem) {
case coins100: Debug.Log ("Congratulations, you are richer!");
coin_count += 100;
Debug.Log ("IAPLog: Coin count: " + coin_count);
break;
case coins500: Debug.Log ("Congratulations, you are richer!");
coin_count += 500;
Debug.Log ("IAPLog: Coin count: " + coin_count);
break;
}
return PurchaseProcessingResult.Complete;
}
public void Buy(string productId) {
Debug.Log ("UnityIAP.BuyClicked (" + productId + ")");
controller.InitiatePurchase (productId);
}
}
Codeless または、手動の IAP 初期化方法、どちらを使うかにかかわらず、Unity Ads の初期化 を行う必要があります。以下のコードサンプルは、初期化メソッドの呼び出し方を示しています。
using UnityEngine;
using UnityEngine.Monetization;
public class AdManager : MonoBehaviour {
public bool testMode = true;
private const string adPlacement = "video";
private const string promoPlacement = "promo";
#if UNITY_IOS
private string gameId = "0000000"; // ここに iOS ゲーム ID
#elif UNITY_ANDROID
private string gameId = "9999999"; // ここに Android ゲーム ID
#else
private string gameId = "0123456"; // エディターエラーを防ぐ
#endif
private void Awake () {
if (Monetization.isSupported && !Monetization.isInitialized) {
Monetization.Initialize (gameId, testMode);
}
}
public void ShowVideoAd () {
ShowAdPlacementContent ad = Monetization.GetPlacementContent (adPlacement) as ShowAdPlacementContent;
ad.Show ();
}
public void ShowPromo () {
PromoAdPlacementContent promo = Monetization.GetPlacementContent (promoPlacement) as PromoAdPlacementContent;
promo.Show ();
}
}
Operate Dashboard の Monetization セクション に移動して、IAP Promo オファーを設定します。
エディターの再生モードを使って、Placement がリクエストするときにテスト広告が表示されることを確認します。
Promo をテストするには、Promo のアセットが設定され、デバイスにビルドされている必要があります。テストモードで初期化すると、テスト用の Promo クリエイティブが表示されます。実際のプロモーションのクリエイティブアセットを見るには、プロダクションモードでゲームをデバイスにビルドする必要があります。