const listener: AdropListener = useMemo(() => ({ // 광고 수신 성공 onAdReceived: (ad: AdropPopupAd) => { console.log('팝업 광고 수신 완료'); console.log('Creative ID:', ad.creativeId); console.log('Campaign ID:', ad.campaignId); // 광고가 준비되면 자동으로 표시 ad.show(); }, // 광고 수신 실패 onAdFailedToReceive: (ad: AdropPopupAd, errorCode?: any) => { console.log('팝업 광고 수신 실패:', errorCode); }, // 광고 노출 onAdImpression: (ad: AdropPopupAd) => { console.log('팝업 광고 노출됨'); console.log('TX ID:', ad.txId); console.log('Destination URL:', ad.destinationURL); }, // 광고 클릭 onAdClicked: (ad: AdropPopupAd) => { console.log('팝업 광고 클릭:', ad.destinationURL); // 클릭 시 팝업 닫기 ad.close(); }, // 팝업 표시 직전 onAdWillPresentFullScreen: (ad: AdropPopupAd) => { console.log('팝업 광고 표시 직전'); }, // 팝업 표시 완료 onAdDidPresentFullScreen: (ad: AdropPopupAd) => { console.log('팝업 광고 표시 완료'); }, // 팝업 닫히기 직전 onAdWillDismissFullScreen: (ad: AdropPopupAd) => { console.log('팝업 광고 닫히기 직전'); }, // 팝업 닫힘 onAdDidDismissFullScreen: (ad: AdropPopupAd) => { console.log('팝업 광고 닫힘'); // 다음 광고 미리 로드 loadNextAd(); }, // 팝업 표시 실패 onAdFailedToShowFullScreen: (ad: AdropPopupAd, errorCode?: any) => { console.log('팝업 광고 표시 실패:', errorCode); },}), []);
// 개발/프로덕션 환경 분리const POPUP_UNIT_ID = __DEV__ ? 'PUBLIC_TEST_UNIT_ID_POPUP_BOTTOM' // 테스트 유닛 ID : 'YOUR_PRODUCTION_UNIT_ID'; // 실제 유닛 IDconst popupAd = new AdropPopupAd(POPUP_UNIT_ID);
const listener: AdropListener = { onAdFailedToReceive: (ad: AdropPopupAd, errorCode?: any) => { console.error('광고 수신 실패:', errorCode); switch (errorCode) { case AdropErrorCode.network: // 네트워크 오류 처리 console.log('네트워크 연결을 확인해주세요'); break; case AdropErrorCode.adNoFill: // 광고 인벤토리 부족 console.log('현재 표시할 수 있는 광고가 없습니다'); break; case AdropErrorCode.invalidUnit: // 잘못된 유닛 ID console.log('광고 유닛 ID를 확인해주세요'); break; default: console.log('광고를 불러올 수 없습니다'); } }, onAdFailedToShowFullScreen: (ad: AdropPopupAd, errorCode?: any) => { console.error('광고 표시 실패:', errorCode); // 다음에 다시 시도 setTimeout(() => { ad.load(); }, 30000); // 30초 후 재시도 },};
// ✅ 좋은 예: 앱 시작 시useEffect(() => { const ad = new AdropPopupAd('YOUR_UNIT_ID'); ad.listener = { onAdReceived: (ad) => ad.show(), onAdFailedToReceive: (_, error) => console.log(error), }; ad.load(); return () => ad.destroy();}, []);// ✅ 좋은 예: 콘텐츠 로드 완료 시const onContentLoaded = () => { if (shouldShowPopupAd()) { popupAd?.show(); }};// ✅ 좋은 예: 특정 이벤트 완료 시const onAchievementUnlocked = () => { popupAd?.show();};// ❌ 나쁜 예: 사용자가 작업 중일 때const onUserTyping = () => { popupAd?.show(); // 사용자 경험 저해};