Version: 2018.2
IAP Promo
IAP 프로모션 플레이스먼트

IAP Promo 통합

개요

중요한 참고 사항: IAP Promo가 작동하려면 Unity Ads를 초기화하기 전에 게임에서 Unity IAP를 초기화해야 합니다.

이 통합 가이드에서는 4개의 주요 단계에 대해 설명합니다.

Unity 에디터에서 프로젝트 준비

Unity 서비스 설정

IAP Promo를 사용하려면 다음 단계를 거쳐야 합니다.

  1. 프로젝트를 Unity 서비스에 사용할 수 있게 설정합니다.
  2. 프로젝트에서 Unity IAP SDK (1.2+)와 Unity 애즈 SDK (2.3+)를 활성화합니다.

Unity IAP 설정

IAP Promo에는 지원되는 Unity IAP SDK 버전(1.17 이상)이 필요합니다. 최신 IAP SDK를 받으려면 In-App Purchasing 을 Services 창(Window > Services)에서 활성화하거나 에셋 스토어에서 임포트합니다. Services 창에서 활성화하는 경우 표시되는 메시지에 따라 에셋 패키지를 임포트해야 합니다.

에디터의 Services 창에서 Unity IAP 활성화
에디터의 Services 창에서 Unity IAP 활성화

자세한 내용은 IAP 설정 문서를 참조하십시오.

Unity 애즈 설정

IAP Promo에는 지원되는 Unity 애즈 SDK 버전이 필요합니다. Unity는 최신 애즈 SDK(3.0+)를 에셋 스토어에서 임포트하여 받도록 권장합니다.

자세한 내용은 Unity에서 Ads 설정을 참조하십시오.

구현

필요한 서비스를 설정한 후 게임에서 구현할 수 있습니다.

IAP 구현

초기화 옵션에는 코드리스와 스크립팅, 두 가지가 있습니다.

코드리스 IAP 사용

코드리스 IAP는 초기화를 자동으로 처리합니다. 코드리스 IAP 초기화를 사용하는 경우 Unity Ads 초기화 메서드를 코드의 다른 부분에서 호출해야 합니다.

코드리스 IAP를 사용하려면 제품 카탈로그(Product Catalog) 를 채운 다음 해당 카탈로그를 페치할 IAP 리스너(IAP Listener)를 생성합니다.

  1. 에디터에서 Window > UnityIAP > IAP Catalog 를 선택하여 IAP Catalog 창을 엽니다. 이 창에는 이전에 설정한 제품이 모두 나열됩니다. 이때 Product Catalog 에 하나 이상의 Product 가 설정되어 있어야 합니다. Products 설정에 대한 전체 설명은 코드리스 IAP를 참조하십시오.

  2. IAP Catalog 창에서 App Store Export > Cloud JSON 을 선택하여 Product Catalog 의 로컬 복사본을 익스포트합니다.
    IAP 제품 카탈로그를 JSON으로 익스포트

  3. IAP Listener 를 생성합니다. Window > Unity IAP > Create IAP Listener 를 선택한 후 게임의 첫 번째 씬에 추가합니다. 게임이 부팅되는 즉시 리스너가 Product Catalog 를 페치합니다. 그러면 게임에서 Promotions 를 요청할 때 씬에 코드리스 버튼이 아직 표시되지 않아 Product 가 준비되지 않는 오류를 방지할 수 있습니다.

스크립팅 사용

코드리스 IAP를 사용하지 않는 경우에는 스크립트를 통해 Unity IAP를 수동으로 초기화해야 합니다. 아래 코드 예시를 참조하십시오.

using UnityEngine;
using UnityEngine.Purchasing;

public class IAPManager : MonoBehaviour, IStoreListener {
  private IStoreController controller;
  
  //The following products must be added to the Product Catalog in the Editor:
  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 ("IAPLog: Congratualtions you are richer!"); 
      coin_count += 100; 
      Debug.Log ("IAPLog: Coin count: " + coin_count); 
      break; 
      
      case coins500: Debug.Log ("IAPLog: Congratualtions 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 구현

또한 코드리스 또는 수동 IAP 초기화 메서드의 사용 여부에 관계없이 Unity 애즈를 초기화해야 합니다. 다음 코드 예제는 호출할 초기화 메서드의 예입니다.

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"; // Your iOS game ID here
  #elif UNITY_ANDROID
    private string gameId = "9999999"; // Your Android game ID here
  #else
    private string gameId = "0123456"; // Prevents Editor Errors
  #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 (); 
  }
}

개발자 대시보드에서 프로모션 설정

작동 대시보드의 Monetization 섹션으로 이동하여 IAP Promo 제안을 설정합니다.

  • Placements를 사용하여 Promotions 가 게임 안에 표시되는 시기와 방법을 설정합니다.
  • 제품 인터페이스를 사용하여 제품 카탈로그(Product Catalog) 를 임포트하고 각 제품의 크리에이티브 에셋을 관리합니다.
  • 프로모션 진행 시기, 프로모션에 포함되는 플레이스먼트제품, 프로모션의 타겟 사용자 등 프로모션 파라미터를 정의합니다.

통합 테스트

다음 코드 예제를 구현하여 IAP Promo 콘텐츠를 호출합니다.

public void ShowPromo()
{
    Advertisement.Show (placementID);
}

에디터에서 Play 를 눌러 Placement 에서 요청하면 테스트 광고가 표시되는지 확인합니다. 실제 프로모션 크리에이티브 에셋을 보려면 제작 모드에서 게임을 기기에 빌드해야 합니다.




IAP Promo
IAP 프로모션 플레이스먼트