메인 콘텐츠로 건너뛰기

개요

배너 광고는 화면의 일부 영역에 표시되는 직사각형 광고입니다. XML 레이아웃과 코드 모두에서 사용할 수 있습니다.

주요 특징

  • 화면 상단, 하단 또는 중간에 고정 배치 가능
  • 이미지 및 동영상 광고 지원
  • XML 레이아웃 및 프로그래밍 방식 모두 지원
  • 리스너를 통한 광고 이벤트 처리
개발 환경에서는 테스트 유닛 ID를 사용하세요: PUBLIC_TEST_UNIT_ID_320_100

XML 레이아웃 구현

XML 레이아웃에서 AdropBanner를 정의하고 Activity나 Fragment에서 로드하는 방식입니다.

1. XML 레이아웃 정의

FrameLayout 또는 다른 컨테이너에 AdropBanner를 배치합니다.
activity_main.xml

2. Activity에서 로드

XML 속성


프로그래밍 방식 구현

코드에서 직접 AdropBanner 인스턴스를 생성하여 뷰에 추가하는 방식입니다.

AdropBanner 초기화

생성자

context
Context
필수
Activity 또는 Application Context

유닛 ID 설정

unitId
String
필수
애드컨트롤 콘솔에서 생성한 유닛 ID

광고 로드

배너를 화면에 추가한 후 load() 메서드를 호출하여 광고를 요청합니다.
배너가 화면에 보이는 시점에 load()를 호출하세요. 화면에 보이지 않는 상태에서 로드하면 노출이 정확하게 측정되지 않을 수 있습니다.

리스너 구현

AdropBannerListener 인터페이스는 광고의 생명주기 이벤트를 처리합니다.

onAdReceived (필수)

광고 수신이 성공했을 때 호출됩니다.

onAdFailedToReceive (필수)

광고 수신이 실패했을 때 호출됩니다.
errorCode
AdropErrorCode
에러 유형을 나타내는 코드. 자세한 내용은 레퍼런스를 참고하세요.

onAdImpression (선택)

광고가 화면에 노출되었을 때 호출됩니다.

onAdClicked (필수)

사용자가 광고를 클릭했을 때 호출됩니다.

onAdVideoStart (선택)

동영상 배너 광고에서 동영상 재생이 시작되었을 때 호출됩니다.

onAdVideoEnd (선택)

동영상 배너 광고에서 동영상 재생이 종료되었을 때 호출됩니다.

Context ID 설정

문맥 타겟팅을 위해 Context ID를 설정할 수 있습니다.
Context ID는 광고를 로드하기 전에 설정해야 합니다.

생명주기 관리

destroy()

배너를 더 이상 사용하지 않을 때는 반드시 destroy()를 호출하여 리소스를 해제해야 합니다.
destroy()를 호출하지 않으면 메모리 누수가 발생할 수 있습니다.

광고 크기

배너 광고는 유닛에 설정한 크기에 맞춰 뷰의 크기를 지정해야 합니다.

일반적인 배너 크기

XML에서 크기 지정

코드에서 크기 지정


테스트 유닛 ID

개발 및 테스트 시 아래의 테스트 유닛 ID를 사용하세요.

사용 예시


동영상 재생 제어

동영상 배너 광고의 경우, play()pause()를 사용하여 비디오 재생을 수동으로 제어할 수 있습니다.

play()

동영상 재생을 재개합니다. 팝업이 닫히거나 앱이 백그라운드에서 복귀해 배너가 다시 노출될 때 호출하세요.

pause()

동영상 재생을 일시 정지합니다. 배너가 팝업에 가려지거나 앱이 백그라운드로 진입할 때 호출하세요.

예시: 백그라운드/포그라운드 처리

play()pause()는 동영상 배너 광고에만 영향을 미칩니다. 이미지 배너에는 효과가 없습니다.

커스텀 클릭 처리

기본적으로 SDK는 사용자가 배너 광고를 클릭하면 자동으로 도착 URL을 엽니다. 클릭 이벤트를 직접 처리하고 싶다면 (예: 확인 다이얼로그 표시, 분석 로깅 후 이동 등) useCustomClick을 사용할 수 있습니다.
useCustomClick
Boolean
기본값:"false"
true로 설정하면 SDK가 클릭 시 자동으로 도착 URL을 열지 않습니다. onAdClicked 이벤트만 발생하며, 직접 open()을 호출해야 합니다.

open()

광고의 도착 URL을 엽니다. 커스텀 URL을 전달하여 다른 URL을 열 수도 있습니다.
open()useCustomClicktrue로 설정된 경우에만 동작합니다. useCustomClickfalse(기본값)이면 SDK가 자동으로 URL을 엽니다.

모범 사례

1. 메모리 관리

Activity나 Fragment가 종료될 때 배너를 반드시 해제하세요.

2. 화면 가시성

배너가 화면에 보일 때 광고를 로드하세요.

3. 에러 처리

광고 로드 실패 시 적절한 에러 처리를 구현하세요.

4. 리사이클러뷰에서 사용

리사이클러뷰에서 배너를 사용할 때는 뷰홀더에서 적절히 관리하세요.

전체 예제

Kotlin 예제

Java 예제

XML 레이아웃

activity_banner.xml

일괄 로드 (loads)

AdropBanner.loads()를 사용하면 한 번의 호출로 여러 배너 광고를 요청할 수 있습니다. 캐러셀, 페이지네이션 피드, 광고 풀 프리페칭 등에 유용합니다.

시그니처

사용 방법

리스너 콜백

단건 onAdReceived / onAdFailedToReceive 콜백은 loads() 경로에서 호출되지 않습니다. 배치 결과는 반드시 onAdsReceived / onAdsFailedToReceive로만 수신하세요.

제약 사항

  • 호출당 최대 5개. 서버가 그 이상을 반환하더라도 앞의 5개만 전달됩니다.
  • 백필은 적용되지 않습니다. 직광고 채움이 없으면 백필 설정과 무관하게 onAdsFailedToReceiveERROR_CODE_AD_NO_FILL로 호출됩니다.
  • onAdsReceived 안에서 destroy()를 호출하지 마세요. 먼저 각 배너를 뷰 계층에 부착한 뒤, 부모 Activity.onDestroy()(또는 동등한 시점)에서 destroy() 하세요.
  • onAdsReceived는 광고 데이터가 적용되는 즉시 발화되며, 이는 단건 load() 동작과 동일합니다 — 뷰에 부착된 뒤 크리에이티브가 그려집니다.

백필 광고

백필 광고가 활성화된 경우, 직광고가 없을 때 자동으로 백필 광고가 로드됩니다. isBackfilled 프로퍼티로 백필 광고 여부를 확인할 수 있습니다.
백필 광고를 사용하려면 io.adrop:adrop-ads-backfill 의존성을 추가해야 합니다.

다음 단계

네이티브 광고

UI에 맞게 커스터마이징 가능한 네이티브 광고 구현하기

전면 광고

화면 전체를 덮는 전면 광고 구현하기

타겟팅 설정

사용자 속성 및 문맥 타겟팅 설정하기

레퍼런스

클래스, 리스너, 에러 코드 참고하기