개요
배너 광고는 화면의 일부 영역에 표시되는 직사각형 광고입니다.AdropBanner 컴포넌트를 사용하여 손쉽게 구현할 수 있습니다.
주요 특징
- 화면 상단, 하단 또는 중간에 고정 배치 가능
- 이미지 및 동영상 광고 지원
- 자동 또는 수동 광고 로드 지원
- 콜백을 통한 광고 이벤트 처리
- 광고 메타데이터 제공 (크리에이티브 ID, 캠페인 ID 등)
개발 환경에서는 테스트 유닛 ID를 사용하세요:
PUBLIC_TEST_UNIT_ID_320_100 또는 PUBLIC_TEST_UNIT_ID_320_50AdropBanner 컴포넌트
Props
문맥 타겟팅에 사용할 컨텍스트 ID (1.17.0+). 마운트할 때의 값만 적용됩니다. 값을 바꾸려면
key를 변경해 배너를 다시 마운트하세요.서버에 요청할 명시적 광고 크기.
style.width가 숫자이면 스타일 크기에서 자동으로 adSize가 파생됩니다({ width: style.width, height: style.height }). style.width가 문자열(예: '100%')이면 adSize는 기본적으로 null이 되며 SDK가 반응형 크기 조정을 사용합니다. 일반적으로 이 prop을 수동으로 설정할 필요가 없습니다.기본 사용법
자동 로드 (권장)
컴포넌트가 마운트될 때 자동으로 광고를 로드합니다.Ref를 사용한 수동 로드
ref를 사용하여 원하는 시점에 광고를 로드할 수 있습니다.
콜백 함수
onAdReceived
광고 수신이 성공했을 때 호출됩니다.onAdClicked
사용자가 광고를 클릭했을 때 호출됩니다.onAdImpression
광고가 화면에 노출되었을 때 호출됩니다.onAdFailedToReceive
광고 수신이 실패했을 때 호출됩니다.onAdVideoStart
동영상 광고 재생이 시작되었을 때 호출됩니다.onAdVideoEnd
동영상 광고 재생이 종료되었을 때 호출됩니다.AdropBannerMetadata
광고 메타데이터 타입입니다.광고 크기
배너 광고는 유닛에 설정한 크기에 맞춰 스타일의 크기를 지정해야 합니다.일반적인 배너 크기
고정 크기 사용
화면 너비에 맞추기
반응형 크기 사용
width를 문자열('100%' 등)로 설정하면 반응형으로 동작하지만, 숫자로 설정하면 해당 값이 광고 서버에 전달되어 적절한 크기의 광고를 요청합니다.테스트 유닛 ID
개발 및 테스트 시 아래의 테스트 유닛 ID를 사용하세요.사용 예시
에러 처리
광고 로드 실패 시 적절한 에러 처리를 구현하세요.에러 상태 관리
모범 사례
1. 화면 가시성
배너가 화면에 보일 때 광고를 로드하세요.2. 로딩 인디케이터
광고 로딩 중 사용자 경험을 개선하세요.3. 다중 배너 관리
여러 배너를 사용할 때는 각각의 상태를 관리하세요.4. 커스텀 클릭 처리
광고 클릭을 직접 처리하려면useCustomClick을 사용하세요.
전체 예제
TypeScript 예제
JavaScript 예제
백필 광고
백필 광고를 사용하려면 네이티브 플랫폼(Android/iOS)에 백필 의존성이 추가되어 있어야 합니다.
onAdFailedToReceive 콜백에서 백필 관련 에러 코드를 처리할 수 있습니다.
백필 광고 미리 로드 (preload)
SDK 1.17.0부터AdropBanner.preload()로 백필 배너 광고를 미리 받아 둘 수 있습니다. 같은 유닛 ID와 같은 크기로 로드한 <AdropBanner>가 직광고 없이 백필 광고로 넘어가면, 백필 광고를 다시 요청하지 않고 미리 받아 둔 광고를 바로 표시합니다.
배너는 preload와 관계없이 직광고를 먼저 요청합니다. 직광고가 표시되면 미리 받아 둔 광고는 그대로 남습니다. preload를 호출하지 않으면 동작은 이전과 같습니다.
동작 조건
adrop-ads-react-native1.17.0 이상과, 네이티브 플랫폼의 백필 의존성 1.17.0 이상이 필요합니다. 시작하기를 참고하세요.- 서버가 앱에 지금 노출할 직광고가 없다고 알려 준 상태에서만 백필 광고를 받습니다. 그 밖에는 백필 광고를 요청하지 않고
AdropErrorCode.preloadSkipped로 끝납니다. 직광고 캠페인이 있는 앱에서는 정상적인 결과입니다. - 앱 설치 직후, 앱 키를 바꾼 직후,
setUID로 다른 사용자로 바꾼 직후에는 서버 응답을 받기 전까지AdropErrorCode.preloadSkipped로 끝납니다. - 테스트 유닛 ID로는 항상
AdropErrorCode.preloadSkipped로 끝납니다.
사용 방법
배너가 있는 화면을 띄우기 직전에 호출하세요. 미리 받은 광고는 쓰이지 않으면 30분 뒤 폐기되므로 곧 표시할 배너에만 호출하세요. 결과를 기다렸다가 배너를 로드할 필요는 없습니다. 아직 받는 중이면 배너가 그 결과를 기다려 사용합니다.AdropBanner.preload()는 미리 받기에 성공하면 resolve되고, 그 밖의 결과(AdropErrorCode.preloadSkipped 포함)는 { code, message }로 reject됩니다. 처리하지 않으면 정상 결과인 SKIPPED도 처리되지 않은 Promise rejection 경고가 발생하므로, try/catch로 감싸거나 .catch를 붙이세요.
<AdropBanner>의 style에 preload의 adSize와 같은 width·height를 숫자로 지정하세요.
미리 받은 광고가 쓰이는 조건
- 같은 유닛 ID와 같은 크기:
<AdropBanner>의style에 숫자로 지정한width·height가 preload의adSize와 같아야 합니다.width: '100%'처럼 숫자가 아닌 크기를 쓰는 배너는 크기가 맞지 않아 미리 받은 광고가 쓰이지 않을 수 있습니다. 크기가 다르면 미리 받은 광고는 그대로 남고, 배너는 평소처럼 백필 광고를 요청합니다. - 한 번만 사용: 미리 받은 광고는 배너 로드 한 번에 쓰이면 없어집니다. 다시 미리 받으려면 preload를 다시 호출하세요.
- 유효 시간과 개수: 30분 안에 쓰이지 않은 광고는 폐기됩니다. 같은 유닛·크기에는 1개만 보관하고, 배너는 서로 다른 유닛·크기 조합을 최대 5개까지 보관합니다. 5개를 넘으면 가장 먼저 받은 광고부터 폐기합니다.
- 다시 호출할 때: 같은 유닛·크기로 다시 호출해도 새로 요청하지 않습니다. 받아 둔 광고가 있으면 새 요청 없이 resolve되고, 받는 중이면 그 로드의 결과(성공 또는 실패)가 똑같이 전달됩니다. 광고를 새로 고치는 용도로는 쓸 수 없습니다. 단, 그 사이 사용자 동의 상태가 바뀌었으면 기존 광고를 버리고 새로 받습니다.
- 동의 상태 변경: 미리 받은 뒤 사용자 동의 상태가 바뀌면 그 광고는 배너 로드에 쓰이지 않습니다.
- resolve의 의미:
preload()가 resolve되었다는 것은 미리 받기가 끝났다는 뜻입니다. 그 결과를 기다리던 배너가 이미 사용했을 수도 있습니다.
실패 코드
다음 단계
네이티브 광고
UI에 맞게 커스터마이징 가능한 네이티브 광고 구현하기
전면 광고
화면 전체를 덮는 전면 광고 구현하기
팝업 광고
작은 팝업 형태로 표시되는 광고 구현하기
레퍼런스
타입, 메서드, 에러 코드 참고하기