Version: 2019.3
言語: 日本語
IAP Promo
IAP Promo Product Catalogs

IAP Promo のインテグレーション

概要

注意: IAP Promo を使用するには、Unity Ads を初期化する前に Unity IAP を初期化する必要があります。

このインテグレーションガイドは 4 つの主要な手順を説明します。

Unity エディター内のプロジェクトの準備

Unity Services の設定

IAP Promo を利用するには、次の設定が必要です。

  1. プロジェクトの Unity Services の設定
  2. プロジェクトの Unity IAP SDK (1.2+) と Unity Ads SDK (2.3+) を有効化

Unity IAP の設定

IAP Promo を利用するには、サポートされているバージョンの Unity IAP SDK (1.17 以降) が必要です。最新の IAP SDK を入手するには、サービスウィンドウで In-App Purchasing を有効にする (Window > Services) か、Asset Store からインポートします。Service ウィンドウから有効にする場合は、プロンプトが表示されたら、必ず Asset パッケージを Import を選択してください。

エディターの Services Window から Unity IAP を有効にします
エディターの Services Window から Unity IAP を有効にします

詳細については IAP の設定 を参照してください。

Unity Ads の設定

IAP Promo には、サポートされているバージョンの Unity Ads SDK が必要です。Unity では、Asset Store からインポートして、最新の Ads SDK(3.0 以降) を入手することをお勧めします。

詳細については Unity Ads の設定 を参照してください。

実装

これらの必要な Services が設定されると、ゲームに実装できます。

IAP の実装

IAP の初期化にはコードレスとスクリプティングの2つの選択肢があります。

Codeless IAP を利用する

Codeless IAP は初期化の処理を行います。Codeless IAP の初期化を利用する場合は、Unity Ads の初期化メソッドをコード内で呼び出す必要があります。

Codeless IAP を使うには Product Catalog を入力し、カタログを取得するために IAP Listener を作成します。

  1. エディター内で Window > UnityIAP > IAP Catalog を選択し、IAP Catalog ウィンドウを開きます。このウィンドウは以前の Products の設定がすべて記載されています。Product Catalog には少なくとも 1 つの Product が設定されている必要があります。Products を設定するための詳しい手順については Codeless IAP のドキュメントを参照してください。

  2. IAP Catalog ウィンドウで App Store Export > Cloud JSON を選択し、Product Catalog のローカルコピーをエクスポートします。
    IAP Product Catalog を JSON にエクスポート

  3. 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);
  }
}

Unity Ads の実装

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 オファーを設定します。

  • Placements を使って、 プロモーション がゲーム内で表示されるタイミングと方法を制御します。Placements ガイド に従って、IAP コンテンツのための Promo の Placements の作成と設定を行ってください。
  • Product Catalog をインポートして各プロダクトのクリエイティブアセットを管理するには Product のインターフェースを使います。
  • プロモーションの実行時、その中に含まれる PlacementsProducts、ターゲットとするユーザーなど、 Promotions のパラメーターを定義します。

インテグレーションのテスト

エディターの再生モードを使って、Placement がリクエストするときにテスト広告が表示されることを確認します。

Promo をテストするには、Promo のアセットが設定され、デバイスにビルドされている必要があります。テストモードで初期化すると、テスト用の Promo クリエイティブが表示されます。実際のプロモーションのクリエイティブアセットを見るには、プロダクションモードでゲームをデバイスにビルドする必要があります。




  • 2019–04–11 修正されたページ
IAP Promo
IAP Promo Product Catalogs