네이티브 광고 고급형(통합)

이 가이드에서는 Google 모바일 광고 Unity 플러그인을 사용하여 Unity 앱에 AdMob 네이티브 광고 고급형을 구현하는 방법과 구현 시 고려해야 하는 사항을 설명합니다.

네이티브 광고는 게재되는 사용자 환경의 형식 및 기능에 맞춰 자동으로 최적화됩니다. 게재되는 앱의 디자인과도 자연스럽게 조화를 이루도록 표시됩니다. AdMob의 네이티브 광고 고급형을 사용하면 콘텐츠와 완벽하게 어우러지는 광고를 렌더링할 수 있습니다. 이 기술을 통해 Unity 앱에서 네이티브 코드를 최대한 활용하는 맞춤 렌더링을 구현할 수 있습니다.

네이티브 광고 고급형은 앱을 만들 때 사용한 것과 같은 유형의 GameObjects를 통해 표시되며, 게재되는 사용자 환경의 시각적 디자인과 어울리는 형식으로 표시되도록 설정할 수 있습니다. 네이티브 광고가 로드되면 애셋이 포함된 네이티브 객체가 앱으로 전달되고, (SDK가 아닌) Unity 앱이 이를 표시합니다.

네이티브 광고 고급형 필드의 설명에는 기본적으로 앱 설치 광고에 대한 설명과 콘텐츠 광고에 대한 설명이 있습니다. 두 유형의 광고 모두 UnifiedNativeAd를 통해 표현되며 이 객체에 네이티브 광고의 애셋이 포함됩니다. 일부 애셋이 누락될 수 있으니 광고를 게재하기 전에 꼭 확인하세요. 고객 성공사례인 우수사례 1우수사례 2를 읽어보세요.

기본 요건

네이티브 광고 형식 로드

네이티브 광고 고급형은 AdLoader 클래스를 통해 로드되며 이 클래스에는 자체 AdLoader.Builder 클래스가 포함되어 있어 생성 중에 맞춤설정이 가능합니다. ForUnifiedNativeAd() 메서드에서 AdLoader가 통합 네이티브 광고를 처리하도록 구성합니다.

private void RequestNativeAd() {
    AdLoader adLoader = new AdLoader.Builder(INSERT_AD_UNIT_HERE)
        .ForUnifiedNativeAd()
        .Build();
}

AdLoader 광고 이벤트 알림 등록

네이티브 광고 고급형이 정상적으로 로드되거나 로드에 실패할 때 알림을 받으려면 아래의 이벤트에 대해 AdLoader 클래스에 대리자를 추가하세요.

OnUnifiedNativeAdLoaded
통합 네이티브 광고가 정상적으로 로드되었을 때 호출됩니다. 로드된 광고에 액세스하려면 이 이벤트에 대한 대리자가 있어야 합니다.
OnAdFailedToLoad
네이티브 광고가 로드에 실패할 때 호출됩니다.

광고 로드

AdLoader 구성을 완료한 후 LoadAd() 메서드를 호출하여 광고를 요청합니다.

adLoader.LoadAd(new AdRequest.Builder().Build());

동시에 광고 요청

아래의 코드 스니펫에는 통합 네이티브 광고를 요청하고, 광고 로드 성공 및 실패에 대한 대리자를 설정하고, 광고 요청을 하는 AdLoader를 구성하는 방법이 나와 있습니다.

private void RequestNativeAd() {
    AdLoader adLoader = new AdLoader.Builder(INSERT_AD_UNIT_HERE)
        .ForUnifiedNativeAd()
        .Build();
    adLoader.OnUnifiedNativeAdLoaded += this.HandleUnifiedNativeAdLoaded;
    adLoader.LoadAd(new AdRequest.Builder().Build());
}

실패한 광고 로드 처리

OnAdFailedToLoad 이벤트는 EventHandler<AdFailedToLoadEventArgs> 유형입니다. 이 이벤트로 인한 광고 로드 실패를 파싱하는 이유는 다음과 같습니다.

private void HandleNativeAdFailedToLoad(object sender, AdFailedToLoadEventArgs args) {
    MonoBehaviour.print("Native ad failed to load: " + args.Message);
}

광고 표시

네이티브 광고 고급형이 로드되면 해당 광고 형식의 광고 이벤트가 호출됩니다. 그런 다음 앱이 광고를 표시해야 하는데, 즉시 표시할 필요는 없습니다.

광고 로드 처리

OnUnifiedNativeAdLoaded 이벤트는 EventHandler<UnifiedNativeAdEventArgs> 유형입니다. UnifiedNativeAd 객체에 캡슐화된 광고는 아래와 같이 UnifiedNativeAdEventArgs에서 가져올 수 있습니다

private UnifiedNativeAd nativeAd;
...
private void HandleUnifiedNativeAdLoaded(object sender, UnifiedNativeAdEventArgs args) {
    MonoBehaviour.print("Unified Native ad loaded.");
    this.nativeAd = args.nativeAd;
}

네이티브 광고 애셋 가져오기

광고가 로드되면 아래에 표시된 것처럼 애셋에 액세스할 수 있습니다. 그래픽 애셋은 Texture2D 객체로 반환되며, 텍스트 애셋은 string 객체로 반환됩니다.

private bool unifiedNativeAdLoaded;
private UnifiedNativeAd nativeAd;
...
void Update() {
    ...

    if (this.unifiedNativeAdLoaded) {
        this.unifiedNativeAdLoaded = false;
        // Get Texture2D for icon asset of native ad.
        Texture2D iconTexture = this.nativeAd.GetIconTexture();

        // Get string for headline asset of native ad.
        string headline = this.nativeAd.GetHeadlineText();
    }
}
...

private void HandleUnifiedNativeAdLoaded(object sender, UnifiedNativeAdEventArgs args) {
    MonoBehaviour.print("Unified native ad loaded.");
    this.nativeAd = args.nativeAd;
    this.unifiedNativeAdLoaded = true;
}

광고 애셋은 Unity 스크립트의 Update() 메서드 등 메인 스레드를 통해서만 액세스해야 합니다. 또한 다음 애셋은 없을 수 있으니 광고 게재 전에 반드시 확인하세요.

  • GetStarRating()
  • GetStore()
  • GetPrice()
  • GetAdvertiser()
  • GetIconTexture()

AdChoices 애셋

AdChoices 광고 애셋은 필수로 네이티브 광고 고급형에 표시해야 합니다. 또한 AdChoices 광고 애셋을 쉽게 볼 수 있도록 적절한 배경색과 이미지를 선택해야 합니다.

광고 애셋에 대한 GameObjects 등록

광고 애셋별로 Unity 앱 내에서 애셋을 표시할 때 사용할 GameObject를 등록해야 합니다. 광고 애셋에 대한 를 등록하는 모든 메서드는 등록의 성공 여부를 보여주는 bool을 반환합니다 광고 애셋 등록이 정상적으로 이루어지지 않으면 해당 네이티브 광고의 노출 및 클릭이 인식되지 않습니다.

if (!this.nativeAd.RegisterIconImageGameObject(icon))
{
    // Handle failure to register ad asset.
}

광고 애셋에 대해 등록된 GameObject에 볼록 Collider 구성요소가 있어야 하며 이 요소는 의 크기 및 모양을 나타냅니다. 광고 애셋에 등록된 GameObject 객체가 Collider 구성요소를 포함하지 않거나 잘못 구성된 경우 네이티브 광고 고급형이 올바르게 작동하지 않습니다.

아래의 코드 스니펫에서는 BoxColliderGameObject에 추가되었으며, 여기에서 TextMesh를 이용해 네이티브 광고의 제목 광고 애셋을 표시합니다. BoxColliderGameObject에 연결되면 이 객체가 TextMesh 구성요소의 텍스트를 수용하도록 자동으로 확장됩니다.

// Create GameObject that will display the headline ad asset.
GameObject headline = new GameObject();
headline.AddComponent<TextMesh>();
headline.GetComponent<TextMesh>().characterSize = 0.5 f;
headline.GetComponent<TextMesh>().anchor = TextAnchor.MiddleCenter;
headline.GetComponent<TextMesh>().color = Color.black;

// Get string of the headline asset.
string headlineText = this.nativeAd.GetHeadlineText();
headline.GetComponent<TextMesh>().text = headlineText;

// Add box collider to the GameObject which will automatically scale.
headline.AddComponent<BoxCollider>();

데모

다음 코드에는 성공적으로 로드된 네이티브 광고의 아이콘 애셋을 가져오고 Quad의 텍스처를 설정하여 아이콘 광고 애셋을 표시하고 애셋을 표시할 GameObject를 등록하는 방법이 나와 있습니다. 이와 같이 광고 애셋을 가져와서 네이티브 광고 클래스에 등록하는 과정을 앱에 표시하는 애셋마다 반복해서 진행해야 합니다.

private GameObject icon;
private bool unifiedNativeAdLoaded;
private UnifiedNativeAd nativeAd;
...
void Update() {
    ...

    if (this.unifiedNativeAdLoaded) {
        this.unifiedNativeAdLoaded = false;
        // Get Texture2D for icon asset of native ad.
        Texture2D iconTexture = this.nativeAd.GetIconTexture();

        icon = GameObject.CreatePrimitive(PrimitiveType.Quad);
        icon.transform.position = new Vector3(1, 1, 1);
        icon.transform.localScale = new Vector3(1, 1, 1);
        icon.GetComponent<Renderer>().material.mainTexture = iconTexture;

        // Register GameObject that will display icon asset of native ad.
        if (!this.nativeAd.RegisterIconImageGameObject(icon))
        {
            // Handle failure to register ad asset.
        }
    }
}
...

private void HandleUnifiedNativeAdLoaded(object sender, UnifiedNativeAdEventArgs args) {
    MonoBehaviour.print("Unified native ad loaded.");
    this.nativeAd = args.nativeAd;
    this.unifiedNativeAdLoaded = true;
}