배너 광고 배너 광고는 이미지 기반의 광고로, 웹사이트에서 가장 일반적으로 사용되는 광고 형태입니다. AdStage SDK는 배너 광고의 자동 크기 조정, 슬라이드 기능, 백그라운드 로딩을 지원합니다.
// HTML에 컨테이너 useEffect(() => {
// SDK 초기화 (한 번만)
AdStage. init ({
apiKey: process.env. NEXT_PUBLIC_ADSTAGE_API_KEY
});
// 배너 광고 생성
if (containerRef.current) {…} id = "banner-container" ></ div >
// 기본 배너 광고 생성
AdStage.ads. banner ( 'banner-container' , {
width: '100%' ,
height: 250
});
AdStage.ads. banner ( 'banner-container' , {
width: '100%' ,
height: 250 ,
onClick : ( adData ) => {
console. log ( '배너 광고 클릭됨:' , adData);
// 사용자 정의 로직 추가 가능
}
});
옵션 타입 기본값 설명 widthstring | number'100%'배너 너비 (px 또는 %) heightnumber250배너 높이 (px) onClickfunctionundefined클릭 시 실행될 콜백 함수
옵션 타입 기본값 설명 autoSlidebooleanfalse여러 광고 시 자동 슬라이드 slideIntervalnumber5000슬라이드 간격 (밀리초) adIdstringundefined특정 광고 ID 지정
옵션 타입 기본값 설명 language'ko' | 'en' | 'ja' | 'zh'undefined언어별 필터링 deviceType'MOBILE' | 'DESKTOP'undefined디바이스별 필터링 country'KR' | 'US' | 'JP' | 'CN' | 'DE'undefined국가별 필터링
HTML (CDN) JavaScript (ES6) React Next.js App Next.js Provider
가장 간단한 CDN 방식으로 HTML에서 바로 사용할 수 있습니다.
<! DOCTYPE html >
< html >
< head >
< meta charset = "UTF-8" >
< title >배너 광고 예제</ title >
</ head >
< body >
< h1 >내 웹사이트</ h1 >
<!-- 배너 광고 컨테이너 -->
< div id = "banner-container" style = "width: 100%; height: 250px; border: 1px solid #ddd;" >
로딩 중...
</ div >
<!-- AdStage SDK 로드 -->
< script src = "https://unpkg.com/@adstage/web-sdk/dist/index.umd.js" ></ script >
< script >
// SDK 초기화
AdStage. init ({
apiKey: 'your-api-key'
});
// 배너 광고 생성
AdStage.ads. banner ( 'banner-container' , {
width: '100%' ,
height: 250
});
</ script >
</ body >
</ html >
여러 배너 광고가 있을 때 자동으로 슬라이드하는 기능입니다.
AdStage.ads. banner ( 'banner-container' , {
width: '100%' ,
height: 250 ,
autoSlide: true , // 자동 슬라이드 활성화
slideInterval: 3000 // 3초마다 슬라이드
});
화면 크기에 따라 배너 크기를 조정하는 방법입니다.
// 미디어 쿼리를 활용한 반응형 구현
const getResponsiveHeight = () => {
if (window.innerWidth <= 768 ) {
return 100 ; // 모바일: 높이 100px
} else if (window.innerWidth <= 1024 ) {
return 200 ; // 태블릿: 높이 200px
} else {
return 250 ; // 데스크톱: 높이 250px
}
};
AdStage.ads. banner ( 'banner-container' , {
width: '100%' ,
height: getResponsiveHeight (),
deviceType: window.innerWidth <= 768 ? 'MOBILE' : 'DESKTOP'
});
// 윈도우 리사이즈 시 재생성
window. addEventListener ( 'resize' , () => {
// 기존 광고 제거 후 새로 생성
AdStage.ads. destroy (slotId);
slotId = AdStage.ads. banner ( 'banner-container' , {
width: '100%' ,
height: getResponsiveHeight (),
deviceType: window.innerWidth <= 768 ? 'MOBILE' : 'DESKTOP'
});
});
특정한 배너 광고만 표시하고 싶을 때 사용합니다.
AdStage.ads. banner ( 'banner-container' , {
width: '100%' ,
height: 250 ,
adId: 'banner-ad-123' // 특정 광고 ID
});
SDK가 자동으로 이미지 크기에 맞춰 컨테이너를 최적화합니다.
// 이미지 크기에 맞춰 자동 조정
AdStage.ads. banner ( 'banner-container' , {
width: '100%' ,
height: 'auto' // 이미지 비율에 맞춰 자동 조정
});
광고는 백그라운드에서 로드되므로 즉시 슬롯 ID를 받을 수 있습니다.
// 즉시 슬롯 ID 반환
const slotId = AdStage.ads. banner ( 'banner-container' );
console. log ( '슬롯 생성됨:' , slotId); // 즉시 실행
// 실제 광고는 비동기로 로드됨
DOM에서 컨테이너가 제거되면 광고도 자동으로 정리됩니다.
const slotId = AdStage.ads. banner ( 'banner-container' );
// DOM에서 컨테이너 제거 시 자동 정리됨
document. getElementById ( 'banner-container' ). remove ();
// 수동으로 destroy() 호출할 필요 없음
SDK가 자동으로 추가하는 CSS 클래스를 활용하여 스타일링할 수 있습니다.
/* 광고 컨테이너 기본 스타일 */
.adstage-ad {
position : relative ;
overflow : hidden ;
border-radius : 8 px ;
}
/* 로딩 상태 */
.adstage-loading {
opacity : 0.7 ;
background : linear-gradient ( 90 deg , #f0f0f0 25 % , #e0e0e0 50 % , #f0f0f0 75 % );
background-size : 200 % 100 % ;
animation : loading 1.5 s infinite ;
}
@keyframes loading {
0% { background-position : 200 % 0 ; }
100% { background-position : -200 % 0 ; }
}
/* 로딩 완료 */
.adstage-loaded {
opacity : 1 ;
transition : opacity 0.3 s ease ;
}
/* 오류 상태 */
.adstage-error {
border : 1 px solid #ff6b6b ;
background-color : #ffe0e0 ;
}
// 모든 슬롯 확인
const allSlots = AdStage.ads. getAllSlots ();
console. log ( '전체 광고 슬롯:' , allSlots);
// 특정 슬롯 확인
const slot = AdStage.ads. getSlotById (slotId);
console. log ( '슬롯 정보:' , slot);