네이티브 광고

컬렉션을 사용해 정리하기 내 환경설정을 기준으로 콘텐츠를 저장하고 분류하세요.

네이티브 광고는 플랫폼 고유의 UI 구성요소를 통해 사용자에게 표시되는 광고 애셋입니다. 뷰는 이미 레이아웃을 빌드하는 것과 동일한 유형의 뷰를 사용하여 표시되며, 레이아웃을 사용하는 사용자 환경의 시각적 디자인과 어울리도록 형식을 지정할 수 있습니다. 코딩 측면에서 이는 네이티브 광고가 로드될 때 앱에서 애셋이 포함된 NativeAd 객체를 수신하며, 앱에서 Google 모바일 광고 SDK가 아닌 앱 표시를 담당한다는 의미입니다.

일반적으로 네이티브 광고를 성공적으로 구현하기 위해서는 SDK를 사용하여 광고를 로드한 다음 앱에 광고 콘텐츠를 표시해야 합니다.

이 페이지에서는 SDK를 사용하여 네이티브 광고

기본 요건

구현

네이티브 광고는 AdLoader 클래스와 함께 로드되며, 이 클래스에는 생성 중에 맞춤설정할 수 있는 자체 Builder 클래스가 포함되어 있습니다. AdLoader를 빌드할 때 리스너를 추가하면 앱에서 어떤 유형의 네이티브 광고를 수신할 준비가 되었는지 지정합니다. 그러면 AdLoader은 해당 유형만 요청합니다.

AdLoader 구축

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

자바

AdLoader adLoader = new AdLoader.Builder(context, "/6499/example/native")
    .forNativeAd(new NativeAd.OnNativeAdLoadedListener() {
        @Override
        public void onNativeAdLoaded(NativeAd nativeAd) {
            // Show the ad.
        }
    })
    .withAdListener(new AdListener() {
        @Override
        public void onAdFailedToLoad(LoadAdError adError) {
            // 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, "/6499/example/native")
    .forNativeAd { ad : NativeAd ->
        // Show the ad.
    }
    .withAdListener(object : AdListener() {
        override fun onAdFailedToLoad(adError: LoadAdError) {
            // 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()

NativeAd 형식 준비

위의 첫 번째 메서드는 NativeAd 형식의 AdLoader를 준비합니다.

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

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

FirebaseUI로 AdListener 설정 (선택사항)

위의 AdLoader를 만드는 동안 withAdListener 함수는 AdListener를 설정합니다. 이 메서드는 AdListener를 유일한 매개변수로 취하며, 광고 수명 주기 이벤트가 발생할 때 AdLoader에서 콜백을 수신합니다.

자바

.withAdListener(new AdListener() {
    // AdListener callbacks can be overridden here.
})

Kotlin

.withAdListener(object : AdListener() {
    // AdListener callbacks can be overridden here.
})

광고 로드

AdLoader를 만들었으면 이를 사용하여 광고를 로드하세요. 사용할 수 있는 두 가지 메서드는 loadAd()loadAds()입니다.

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

자바

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

Kotlin

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

자바

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

Kotlin

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

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

loadAds()는 SDK가 요청에 대해 로드해야 하는 광고 수를 추가 매개변수로 사용합니다. 이 수는 최대 5개로 제한되며, SDK가 요청된 광고 수를 정확하게 반환하지 않을 수도 있습니다.

반환된 Google 광고는 모두 서로 다릅니다. 폭포식 구조 미디에이션 또는 입찰을 위해 구성된 구매자를 비롯하여 예약 인벤토리 또는 서드 파티 구매자의 광고가 고유하지 않을 수도 있습니다.

콜백

loadAd() 호출 후에는 이전에 정의된 리스너 메서드에 대해 단일 콜백이 실행되어 네이티브 광고 객체를 전달하거나 오류를 보고합니다.

loadAds() 호출 후에는 이러한 콜백을 여러 번 실행합니다 (1회 이상, 요청된 광고 수 이하). 여러 광고를 요청하는 앱은 콜백 구현에서 AdLoader.isLoading()를 호출하여 로드 프로세스가 완료되었는지 확인해야 합니다.

다음은 onNativeAdLoaded() 콜백에서 isLoading()를 확인하는 방법을 보여주는 예입니다.

자바

final AdLoader adLoader = new AdLoader.Builder(this, "/6499/example/native")
        .forNativeAd(new NativeAd.OnNativeAdLoadedListener() {
    @Override
    public void onNativeAdLoaded(NativeAd nativeAd) {
        ...
        // 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 AdManagerAdRequest.Builder().build(), 3);

Kotlin

lateinit var adLoader: AdLoader
...
adLoader = AdLoader.Builder(this, "/6499/example/native")
    .forNativeAd {
        ...
        // 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(AdManagerAdRequest.Builder().build(), 3)

리소스 해제

로드된 네이티브 광고에는 destroy() 메서드를 사용해야 합니다. 이렇게 하면 사용률이 확보된 메모리가 확보되고 메모리 누수가 방지됩니다.

활동의 onDestroy() 메서드에서 모든 NativeAd 참조가 제거되었는지 확인합니다.

onNativeAdLoaded 콜백에서 역참조될 기존 네이티브 광고를 모두 삭제해야 합니다.

또 다른 주요 확인은 활동이 제거되었는지, 그리고 소멸된 광고가 있다면 반환된 광고에서 destroy()를 호출하고 즉시 다음을 반환합니다.

자바

final AdLoader adLoader = new AdLoader.Builder(this, "/6499/example/native")
        .forNativeAd(new NativeAd.OnNativeAdLoadedListener() {
    @Override
    public void onNativeAdLoaded(NativeAd nativeAd) {
        // If this callback occurs after the activity is destroyed, you
        // must call destroy and return or you may get a memory leak.
        // Note `isDestroyed()` is a method on Activity.
        if (isDestroyed()) {
            nativeAd.destroy();
            return;
        }
        ...
    }
}).build();

Kotlin

lateinit var adLoader: AdLoader
...
adLoader = AdLoader.Builder(this, "/6499/example/native")
    .forNativeAd { nativeAd ->
        // If this callback occurs after the activity is destroyed, you
        // must call destroy and return or you may get a memory leak.
        // Note `isDestroyed` is a method on Activity.
        if (isDestroyed) {
            nativeAd.destroy()
            return@forNativeAd
        }
        ...
    }.build()

광고를 요청해야 하는 경우

네이티브 광고를 표시하는 애플리케이션은 광고가 실제로 표시되기 전에 미리 요청할 수 있습니다. 대부분의 경우 이 방법을 사용하는 것이 좋습니다. 예를 들어 네이티브 광고가 포함된 항목 목록을 표시하는 앱은 전체 목록에 대해 네이티브 광고를 로드할 수 있습니다. 일부 광고는 사용자가 뷰를 스크롤한 후에만 표시되고 일부는 전혀 표시되지 않을 수 있습니다.

동영상 광고의 하드웨어 가속

동영상 광고가 네이티브 광고 뷰에 성공적으로 표시되려면 하드웨어 가속을 사용 설정해야 합니다.

하드웨어 가속은 기본적으로 사용 설정되어 있지만 일부 앱에서는 사용 중지할 수 있습니다. 이 조건이 앱에 적용되는 경우 광고를 사용하는 활동 클래스에 하드웨어 가속을 사용 설정하는 것이 좋습니다.

하드웨어 가속 사용 설정

앱이 전역적으로 사용 설정된 하드웨어 가속으로 올바르게 작동하지 않는 경우 개별 활동에 맞게 제어할 수 있습니다. 하드웨어 가속을 사용 설정 또는 사용 중지하려면 AndroidManifest.xml<application><activity> 요소에 android:hardwareAccelerated 속성을 사용하면 됩니다. 다음 예에서는 앱 전체에서 하드웨어 가속을 사용 설정하지만 활동 하나에 대해서는 사용 중지합니다.

<application android:hardwareAccelerated="true">
    <!-- For activities that use ads, hardwareAcceleration should be true. -->
    <activity android:hardwareAccelerated="true" />
    <!-- For activities that don't use ads, hardwareAcceleration can be false. -->
    <activity android:hardwareAccelerated="false" />
</application>

하드웨어 가속을 제어하는 옵션에 관한 자세한 내용은 HW 가속 가이드를 참고하세요. 참고로, 활동이 사용 중지된 경우 개별 광고 보기에는 하드웨어 가속을 사용 설정할 수 없으므로 활동 자체에는 하드웨어 가속을 사용 설정해야 합니다.

NativeAd 표시

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