맞춤 네이티브 광고 형식

Google Ad Manager 게시자는 맞춤 애셋 목록을 정의하여 자체적인 네이티브 광고 형식을 만들 수 있습니다. 이러한 맞춤 네이티브 광고 형식을 예약된 광고와 함께 사용할 수 있습니다. 게시자는 맞춤 네이티브 광고 형식을 통해 임의의 이미지와 문자열 데이터를 앱에 전달할 수 있습니다. 이 데이터는 CustomNativeTemplateAd 객체로 표현됩니다.

맞춤 네이티브 광고 형식 로드

AdLoader 객체를 사용하여 맞춤 네이티브 광고 형식을 로드합니다. forCustomTemplateAd() 메서드는 맞춤 네이티브 광고 형식을 처리하도록 AdLoader를 구성합니다. 각 맞춤 네이티브 광고 형식에는 템플릿 ID 값이 연결되어 있습니다. 앱에서 AdLoader가 요청할 맞춤 네이티브 광고 형식의 템플릿 ID를 지정해야 합니다. Ad Manager UI의 템플릿 ID에서 요청할 네이티브 광고 형식의 템플릿 ID를 찾습니다.

void LoadCustomNativeTemplateAd()
{
    AdLoader adLoader = new AdLoader.Builder("/6499/example/native")
        .forCustomNativeAd("10063170")
        .Build();
    adLoader.LoadAd(new AdRequest.Builder().Build());
}

2개 이상의 광고 소재 템플릿을 제공하도록 단일 광고 단위를 설정할 수 있으므로, 서로 다른 템플릿 ID를 이용하여 forCustomTemplateAd()를 여러 번 호출하여 노출 가능한 맞춤 네이티브 광고 형식이 2개 이상 게재되도록 Adloader를 준비할 수 있습니다. 아래의 코드 스니펫에는 여러 맞춤 네이티브 광고 형식 템플릿을 위해 AdLoader를 준비하는 방법이 나와 있습니다.

void LoadCustomNativeTemplateAd()
{
    AdLoader adLoader = new AdLoader.Builder("/6499/example/native")
        .forCustomNativeAd("10063170")
        .forCustomNativeAd("10063171")
        .forCustomNativeAd("10063172")
        .Build();
    adLoader.LoadAd(new AdRequest.Builder().Build());
}

맞춤 네이티브 광고 형식 광고 이벤트

AdLoader 클래스는 EventHandler 유형의 광고 이벤트를 제공하여 맞춤 네이티브 광고 형식의 수명 주기를 알려줍니다. 다음은 맞춤 네이티브 광고 형식 광고 이벤트를 등록하는 방법의 예입니다.

adLoader.onCustomNativeTemplateAdLoaded += HandleCustomNativeAdLoaded;
adLoader.OnAdFailedToLoad += HandleCustomNativeAdFailedToLoad;

HandleCustomNativeAdLoaded() 메서드에는 CustomNativeEventArgs 매개변수가 포함되어 있습니다. 이 이벤트 매개변수를 통해 로드된 맞춤 네이티브 광고 형식에 액세스할 수 있습니다(아래 참고).

private boolean adLoaded;
private CustomNativeTemplateAd customNativeTemplateAd;
...
void HandleCustomNativeAdLoaded(object sender, CustomNativeEventArgs args)
{
    customNativeTemplateAd = args.nativeAd;
    adLoaded = true;
}

맞춤 네이티브 광고 형식 표시

맞춤 네이티브 광고 형식은 개수에 제한 없이 사용자 정의 이미지 및 텍스트 애셋을 지원합니다. CustomNativeTemplateAd 클래스를 통해 이러한 애셋에 액세스합니다. 이 클래스는 템플릿 필드의 변수 ID를 매개변수로 사용하는 GetTexture2D()GetText() 메서드를 제공합니다.

다음은 CustomNativeTemplateAd에서 애셋을 추출하는 구현의 예입니다.

public const int NATIVE_AD_TEMPLATE_1 = 10063170;
public const int NATIVE_AD_TEMPLATE_2 = 10063171;

private boolean adLoaded;
private Texture2d mainImageTexture;
private string headline;
private CustomNativeTemplateAd customNativeTemplateAd;
...

void Update()
{
    if(adLoaded)
    {
        mainImageTexture = customNativeTemplateAd.GetTexture2D("MainImage");
        headline = customNativeTemplateAd.GetText("Headline");

        string templateId = customNativeTemplateAd.GetCustomTemplateId();
        if (templateId == NATIVE_AD_TEMPLATE_1)
        {
            ...
        }
        else if (templateId == NATIVE_AD_TEMPLATE_2)
        {
            ...
        }
        ...
        adLoaded = false;
    }
}
...

void HandleCustomNativeAdLoaded(object sender, CustomNativeEventArgs args)
{
    customNativeTemplateAd = args.nativeAd;
    adLoaded = true;
    ...
}

맞춤 네이티브 광고 형식의 클릭 및 노출 처리

맞춤 네이티브 광고 형식을 사용하면 앱에서 노출을 기록하고 SDK에 클릭 이벤트를 보고해야 합니다.

노출 기록

맞춤 네이티브 광고 형식의 노출을 기록하려면 해당 CustomNativeTemplateAd에서 RecordImpression() 메서드를 호출하세요.

customNativeTemplateAd.RecordImpression();

클릭 보고

애셋에서 클릭이 발생했음을 SDK에 보고하려면 해당 CustomNativeTemplateAd에서 PerformClick() 메서드를 호출하고 클릭한 애셋의 이름을 전달하세요. 예를 들어 맞춤 네이티브 광고 형식에 'MainImage'라는 애셋이 있으며, 여기에 해당하는 텍스처에 대한 클릭을 보고하려는 경우 다음과 같은 코드를 사용할 수 있습니다.

customNativeTemplateAd.PerformClick("MainImage");

맞춤 템플릿 광고에 대한 클릭이 보고되면 SDK는 다음 순서에 따라 2가지 응답을 시도합니다.

  1. 광고의 딥 링크 URL에 대한 콘텐츠 확인자를 찾아서 처음으로 확인되는 항목을 시작합니다.
  2. 브라우저를 열고 광고의 기존 도착 URL로 이동합니다.

맞춤 클릭 동작

사용자를 딥 링크 또는 웹 브라우저로 연결하는 대신 맞춤 네이티브 광고 형식에 대한 클릭 동작을 직접 처리할 수도 있습니다. 이렇게 하려면 AdLoader.Builder.forCustomTemplateAd() 메서드에서 선택적 Action<CustomNativeTemplateAd, string>을 제공하면 됩니다. 이 맞춤 클릭 동작을 설정하면 위에서 설명한 SDK의 클릭 동작이 재정의됩니다. 다음은 맞춤 클릭 동작을 사용하여 특정 애셋에 대한 클릭을 기록하는 방법의 예입니다.

private void LoadCustomNativeTemplateAd()
{
    AdLoader adLoader = new AdLoader.Builder("/6499/example/native")
        .forCustomNativeAd("10063170", HandleCustomNativeAdClicked)
        .Build();
    adLoader.onCustomNativeTemplateAdLoaded += HandleCustomNativeAdLoaded;
    adLoader.OnAdFailedToLoad += HandleCustomNativeAdFailedToLoad;
    adLoader.LoadAd(createAdRequest());
}

private void HandleCustomNativeAdClicked(CustomNativeTemplateAd customNativeTemplateAd, string assetName)
{
    Debug.Log("Native ad asset with name " + assetName + " was clicked.");
}