배너 광고
기본 사용법
data attributes를 이용한 방법
<div
data-adrop-unit='YOUR_UNIT_ID' // 필수. 애드컨트롤 콘솔에서 생성한 유닛의 ID
data-adrop-context-id='YOUR_CONTEXT_ID' // 선택. 문맥 타겟팅에 필요한 문맥 문자열
data-adrop-theme='light' // 선택. 'light' 또는 'dark'
/>개요
간단하게 구현할 때 추천합니다.
별도의 함수 호출 없이, 광고 지면이 렌더링될 때 즉시 광고 요청 및 송출이 진행됩니다.
attributes
data-adrop-unit필수
애드컨트롤 콘솔에서 생성한 유닛의 ID
data-adrop-context-id선택
문맥 타겟팅에 필요한 문맥 문자열 (자세한 내용은 문맥 타겟팅를 참조해주세요)
data-adrop-theme선택 (default:
'light')애드컨트롤 콘솔에서 광고 유닛에 다크 모드 설정을 사용하는 경우 지정 (자세한 내용은 다크 모드 소재 받기를 참조해주세요)
광고 재요청
key 변화를 통한 remount 방식
<div key={`${unitId}:${contextId}:${theme}`} ... />요청값에 따라 고유한 key값이 되도록 key를 설정하면 remount가 되면서 광고를 다시 불러올 수 있습니다.
renderAd를 호출하는 방식
const ref = useRef<HTMLDivElement | null>(null) useEffect(() => { if (!ref.current) return Adrop.instance().renderAd(ref.current) }, []) <div ref={ref} ... />이 방법은 함수를 통해 원하는 시점에 광고를 재요청할 수 있는 방식입니다.
renderAd호출 시 속성을 변경하고 싶다면, 아래의 “renderAd 함수 호출을 이용한 방법 > 광고 재요청” 섹션을 참고해주세요.
renderAd 함수 호출을 이용한 방법
const ref = useRef<HTMLDivElement | null>(null)
useEffect(() => {
if (!ref.current) return
Adrop.instance().renderAd(ref.current, {
unit: 'YOUR_UNIT_ID' // 필수. 애드컨트롤 콘솔에서 생성한 유닛의 ID
contextId: 'YOUR_CONTEXT_ID' // 선택. 문맥 타겟팅에 필요한 문맥 문자열
theme: 'light' // 선택. 'light' 또는 'dark'
})
}, [])
<div ref={ref}/>개요
직접 광고 요청 타이밍을 관리할 때 추천합니다.
광고 지면 Container를 renderAd 함수에 전달해야 합니다.
광고 요청 타이밍을 수동으로 조절할 수 있어, 재요청을 비교적 쉽게 처리할 수 있습니다.
props
광고 재요청
Adrop.instance().renderAd(ref.current, {
unit: 'YOUR_UNIT_ID'
contextId: 'YOUR_CONTEXT_ID'
theme: 'light'
})renderAd함수를 다시 호출이 방식은 1번에서 data attributes로 생성한 지면에도 재요청이 가능합니다.
이 경우, data attributes에 존재하지 않는 항목이나 수정하고 싶은 항목만 전달하면 됩니다.
광고 크기 설정
<div
... // 컨테이너 attributes 또는 ref
className='your_css_class_name' // CSS 적용 시
style={your_style} // style 적용 시
/>기본적으로 애드컨트롤 콘솔에 등록한 광고 유닛의 사이즈대로 광고 지면을 구성하는 것이 가장 바람직합니다.
직광고
반응형 및 가로, 세로 가운데 정렬을 지원합니다.
광고주가 등록한 소재가 최적으로 보이려면
height는 등록한 유닛의 높이대로 지정해주시는 것이 좋습니다.
Backfill 광고
가로 가운데 정렬을 지원합니다.
광고 지면의 사이즈 그대로 Backfill 광고를 요청합니다.
이벤트 처리
이벤트 Callback 등록
useEffect(() => {
// unit: 애드컨트롤 콘솔에서 생성한 유닛 ID
// adData: 광고 요청 응답
// 광고 요청에 성공하면 호출되는 콜백
const adReceivedCallback = (unit: string, adData: AdData) => {
// YOUR AD_RECEIVED CALLBACK FUNCTION
}
// 현재 송출 가능한 직광고가 없을 때 호출되는 콜백
const adNoFillCallback = (unit: string) => {
// YOUR AD_NO_FILL CALLBACK FUNCTION
}
// 광고 요청에 실패했을 때 호출되는 콜백
const adFailedCallback = (unit: string) => {
// YOUR AD_FAILED CALLBACK FUNCTION
}
// 광고 소재 노출 시 호출되는 콜백
const adImpressionCallback = (unit: string, adData: AdData) => {
// YOUR AD_IMPRESSION CALLBACK FUNCTION
}
// 광고 소재 클릭 시 호출되는 콜백
const adClickedCallback = (unit: string, adData: AdData) => {
// YOUR AD_CLICKED CALLBACK FUNCTION
}
// 가능한 Backfill 광고가 없을 때 호출되는 콜백
// 개발 단계에서는 이 콜백이 호출되면 라이브 시 Backfill이 정상 노출됨
// 단, localhost에서는 초기화 때 등록한 app ID에 연결된 광고 유닛 중에서
// Backfill 수익화 중인 유닛이 하나라도 있어야 해당 콜백이 호출됨
const adBackfillNoFillCallback = (unit: string) => {
// YOUR AD_BACKFILL_NO_FILL CALLBACK FUNCTION
}
// 콜백 등록
Adrop.instance().on(Adrop.Events.AD_RECEIVED, adReceivedCallback)
Adrop.instance().on(Adrop.Events.AD_NO_FILL, adNoFillCallback)
Adrop.instance().on(Adrop.Events.AD_FAILED, adFailedCallback)
Adrop.instance().on(Adrop.Events.AD_IMPRESSION, adImpressionCallback)
Adrop.instance().on(Adrop.Events.AD_CLICKED, adClickedCallback)
Adrop.instance().on(Adrop.Events.AD_BACKFILL_NO_FILL, adBackfillNoFillCallback)
// 콜백 해제
return () => {
Adrop.instance().off(Adrop.Events.AD_RECEIVED, adReceivedCallback)
Adrop.instance().off(Adrop.Events.AD_NO_FILL, adNoFillCallback)
Adrop.instance().off(Adrop.Events.AD_FAILED, adFailedCallback)
Adrop.instance().off(Adrop.Events.AD_IMPRESSION, adImpressionCallback)
Adrop.instance().off(Adrop.Events.AD_CLICKED, adClickedCallback)
Adrop.instance().off(Adrop.Events.AD_BACKFILL_NO_FILL, adBackfillNoFillCallback)
}
}, [])이벤트 종류는 AdropEvents를 참조해주세요.
AdData는 AdData를 참조해주세요.
on으로 등록한 콜백은 더이상 쓰지 않을 땐off를 통해 해제해주세요.
이벤트 filter
const BannerComponent = () => {
useEffect(() => {
const adReceivedCallback = (unit: string, adData: AdData) => {
// YOUR AD_RECEIVED CALLBACK FUNCTION
}
Adrop.instance().on(Adrop.Events.AD_RECEIVED, adReceivedCallback, {
unit: 'YOUR_UNIT_ID'
})
return () => {
Adrop.instance().off(Adrop.Events.AD_RECEIVED, adReceivedCallback)
}
}, [])
return <div data-adrop-unit='YOUR_UNIT_ID' .../>
}특정 unit에 대해서만 이벤트 처리를 하고 싶다면
on의 세 번째 파라미터에{ unit: string }을 filter로 추가하면 됩니다.위와 같이 컴포넌트 내에서 이벤트를 같이 처리하고 싶을 때 좋은 방법입니다.
Last updated