네이티브 광고

네이티브 광고는 플랫폼 고유의 UI 구성요소를 통해 사용자에게 제공되는 광고 애셋입니다. 이 광고는 레이아웃을 구축할 때 사용한 것과 동일한 유형의 보기로 나타나며, 게재되는 사용자 환경의 시각적 디자인과 어울리는 형식으로 표시될 수 있습니다. 코딩 측면에서 보면 네이티브 광고가 로드될 때 앱에서 광고 애셋을 포함하는 NativeAd 객체를 수신하고 Google 모바일 광고 SDK가 아닌 앱에서 광고 표시를 처리한다는 뜻입니다.

일반적으로 네이티브 광고의 성공적인 구현은 SDK를 통해 광고를 로드하는 작업과 앱에 광고 콘텐츠를 표시하는 작업으로 구성됩니다. 이 페이지에서는 SDK를 사용하여 네이티브 광고를 로드하는 방법에 대해 다룹니다.

기본 요건

광고 로드

네이티브 광고는 AdLoader 클래스를 통해 로드되며, 이 클래스에는 생성 중에 맞춤설정이 가능한 Builder 클래스가 포함되어 있습니다. AdLoader를 빌드하는 동안 여기에 리스너를 추가하면 앱에서 어떤 유형의 네이티브 광고를 수신할 준비가 되었는지 지정합니다. 이렇게 되면 AdLoader에서 해당 유형만 요청합니다.

AdLoader 구축

다음 코드에는 통합 네이티브 광고를 로드할 수 있는 AdLoader를 빌드하는 방법이 나와 있습니다.

자바

    AdLoader adLoader = new AdLoader.Builder(context, "ca-app-pub-3940256099942544/2247696110")
        .forUnifiedNativeAd(new UnifiedNativeAd.OnUnifiedNativeAdLoadedListener() {
            @Override
            public void onUnifiedNativeAdLoaded(UnifiedNativeAd unifiedNativeAd) {
                // Show the ad.
            }
        })
        .withAdListener(new AdListener() {
            @Override
            public void onAdFailedToLoad(int errorCode) {
                // Handle the failure by logging, altering the UI, and so on.
            }
        })
        .withNativeAdOptions(new NativeAdOptions.Builder()
                // Methods in the NativeAdOptions.Builder class can be
                // used here to specify individual options settings.
                .build())
        .build();
    

Kotlin

    val adLoader = AdLoader.Builder(this, "ca-app-pub-3940256099942544/2247696110")
        .forUnifiedNativeAd { ad : UnifiedNativeAd ->
            // Show the ad.
        }
        .withAdListener(object : AdListener() {
            override fun onAdFailedToLoad(errorCode: Int) {
                // Handle the failure by logging, altering the UI, and so on.
            }
        })
        .withNativeAdOptions(NativeAdOptions.Builder()
                // Methods in the NativeAdOptions.Builder class can be
                // used here to specify individual options settings.
                .build())
        .build()
    

UnifiedNativeAd 형식 게재 준비

위의 첫 번째 메서드는 AdLoader에서 UnifiedNativeAd 형식을 게재하도록 합니다.

forUnifiedNativeAd()
이 메서드를 호출하면 통합 네이티브 광고를 요청하도록 AdLoader가 구성됩니다. 광고가 성공적으로 로드되면 리스너 객체의 onUnifiedNativeAdLoaded() 메서드가 호출됩니다.

AdLoader에서 광고 요청을 하면 Google에서 게시자 수익을 극대화하는 광고를 선택하여 게재합니다.

AdLoader와 함께 AdListener 사용

위에서 설명한 AdLoader를 생성하는 동안 withAdListener 함수에서 AdListener를 설정합니다.

이 단계는 선택사항입니다. 이 메서드는 AdListener를 유일한 매개변수로 취하며, 광고 수명 주기 이벤트가 발생할 때 이 매개변수를 통해 AdLoader로부터 콜백을 수신합니다.

자바

    .withAdListener(new AdListener() {
        // AdListener callbacks like OnAdFailedToLoad, OnAdOpened, OnAdClicked and
        // so on, can be overridden here.
    })
    

Kotlin

    .withAdListener(object : AdListener() {
        // AdListener callbacks like OnAdFailedToLoad, OnAdOpened, OnAdClicked and
        // so on, can be overridden here.
    })
    

AdListener 객체가 네이티브 광고와 작동하는 방식과 배너 광고 및 전면 광고와 작동하는 방식 간에는 중요한 차이가 있습니다. AdLoader에는 자체적인 형식별 리스너 (즉 UnifiedNativeAd.OnUnifiedNativeAdLoadedListener)가 있고 광고가 로드되었을 때 이를 사용하므로 네이티브 광고가 성공적으로 로드되면 AdListeneronAdLoaded() 메서드를 호출하지 않습니다.

광고 로드

AdLoader 빌드를 완료한 후 이를 이용해 광고를 로드하세요. 이 작업은 loadAd()loadAds() 메서드를 이용해 처리할 수 있습니다.

loadAd() 메서드는 광고 1개에 대한 요청을 보냅니다.

loadAd()
이 메서드는 광고 1개에 대한 요청을 보냅니다.

자바

    adLoader.loadAd(new AdRequest.Builder().build());
    

Kotlin

    adLoader.loadAd(AdRequest.Builder().build())
    

loadAds() 메서드는 여러 광고(최대 5개)에 대한 요청을 보냅니다.

자바

    adLoader.loadAds(new AdRequest.Builder().build(), 3);
    

Kotlin

    adLoader.loadAds(AdRequest.Builder().build(), 3)
    

두 메서드 모두 AdRequest 객체를 첫 번째 매개변수로 사용합니다. 배너 광고와 전면 광고에서 사용되는 AdRequest 클래스와 동일하며 다른 광고 형식에서처럼 AdRequest 클래스의 메서드를 이용해 타겟팅 정보를 추가할 수 있습니다.

loadAds()는 SDK가 요청에 대해 로드해야 하는 광고 수를 추가 매개변수로 사용합니다. 최댓값은 5이며, SDK가 요청된 수의 광고를 정확하게 반환하지 않을 수 있습니다. loadAds() 호출에서 여러 광고가 반환될 때에는 각기 다른 광고가 반환됩니다.

loadAd() 호출 후에는 위에 정의된 리스너 메서드로 콜백을 한 번 하여 네이티브 광고 객체를 전달하거나 오류를 보고합니다.

loadAds() 호출 후에는 이러한 콜백을 여러 번 합니다(한 번 이상, 요청된 광고 수 이하). 앱에서 여러 광고를 요청하면 콜백 구현에서 AdLoader.isLoading()을 호출하여 로드 과정이 완료되었는지를 확인해야 합니다.

다음은 onUnifiedNativeAdLoaded() 콜백에서 isLoading()를 확인하는 방법의 예입니다.

자바

final AdLoader adLoader = new AdLoader.Builder(this, "ca-app-pub-3940256099942544/2247696110")
            .forUnifiedNativeAd(new UnifiedNativeAd.OnUnifiedNativeAdLoadedListener() {
        @Override
        public void onUnifiedNativeAdLoaded(UnifiedNativeAd ad) {
            ...
            // some code that displays the ad.
            ...
            if (adLoader.isLoading()) {
                // The AdLoader is still loading ads.
                // Expect more adLoaded or onAdFailedToLoad callbacks.
            } else {
                // The AdLoader has finished loading ads.
            }
        }
    }).build();
    adLoader.loadAds(new AdRequest.Builder().build(), 3);

Kotlin

    lateinit var adLoader: AdLoader
    ...
    adLoader = AdLoader.Builder(this, "ca-app-pub-3940256099942544/2247696110")
        .forUnifiedNativeAd {
            ...
            // some code that displays the ad.
            ...
            if (adLoader.isLoading) {
                // The AdLoader is still loading ads.
                // Expect more adLoaded or onAdFailedToLoad callbacks.
            } else {
                // The AdLoader has finished loading ads.
            }
        }.build()
    adLoader.loadAds(AdRequest.Builder().build(), 3)

항상 테스트 광고로 테스트

앱을 제작하고 테스트할 때 운영 중인 실제 광고 대신 테스트 광고를 사용하세요. 이렇게 하지 않으면 계정이 정지될 수 있습니다.

테스트 광고를 로드하는 가장 쉬운 방법은 Android에서 네이티브 광고 고급형의 테스트 전용 광고 단위 ID를 사용하는 것입니다.

ca-app-pub-3940256099942544/2247696110

이 ID는 모든 요청에 대해 테스트 광고를 반환하도록 특별히 구성되었으며, 코딩, 테스트 및 디버깅 중에 앱에서 자유롭게 사용할 수 있습니다. 앱을 게시하기 전에 이 ID를 자체 광고 단위 ID로 바꿔야 합니다.

모바일 광고 SDK의 테스트 광고가 작동하는 방식을 자세히 알아보려면 테스트 광고를 참고하세요.

광고 요청 시점

네이티브 광고를 표시하는 애플리케이션은 광고가 실제로 표시되는 시점 전에 요청할 수 있습니다. 일반적으로 이러한 방식을 권장합니다. 예를 들어 네이티브 광고가 포함된 목록을 표시하는 앱은 전체 목록에 대한 네이티브 광고를 로드할 수 있습니다. 이 경우 일부는 사용자가 보기를 스크롤한 후에만 표시되고, 일부는 전혀 표시되지 않을 수 있습니다.

UnifiedNativeAd 표시

광고를 로드한 후에는 사용자에게 광고를 게재하는 일만 남게 됩니다. 광고 게재 방식을 알아보려면 네이티브 광고 고급형 가이드를 참고하세요.