React Native 보상형 광고
사용자가 광고를 끝까지 시청하면 보상을 제공하는 광고입니다.
시작하기 전에
React Native SDK 설정을 완료하세요.
Adrop 콘솔에 배너 광고 유닛을 생성하고 Unit ID를 확인하세요.
광고 Unit ID 준비하기
Adrop 콘솔에서 생성한 광고 유닛 ID를 준비하세요. 개발 중에는 테스트 ID를 사용할 수 있습니다.
// 테스트용 Unit ID
const unitId = "PUBLIC_TEST_UNIT_ID_REWARDED"
// 프로덕션용 Unit ID (콘솔에서 발급)
const unitId = "YOUR_UNTI_ID" 테스트 Unit ID 목록
Rewarded
PUBLIC_TEST_UNIT_ID_REWARDED
주의: 테스트 Unit ID는 개발 중에만 사용하세요. 앱 출시 전 반드시 콘솔에서 발급받은 실제 Unit ID로 교체해야 합니다.
사용 방법
보상형 광고는 두 가지 방법으로 구현할 수 있습니다.
1. Hook 방식
import React, { useCallback, useEffect } from 'react';
import { View, Button, Alert } from 'react-native';
import { useAdropRewardedAd } from 'adrop-ads-react-native';
const RewardedExample = () => {
const {
load,
show,
reset,
isLoaded,
isReady,
isEarnRewarded,
reward,
errorCode,
} = useAdropRewardedAd('YOUR_UNIT_ID');
// 보상 지급 처리
useEffect(() => {
if (isEarnRewarded && reward) {
Alert.alert(
'보상 획득!',
`타입: ${reward.type}, 수량: ${reward.amount}`
);
// 서버에 보상 지급 요청
}
}, [isEarnRewarded, reward]);
const handleLoad = useCallback(() => {
if (isReady) {
load();
}
}, [isReady, load]);
return (
<View>
<Button title="광고 로드" onPress={handleLoad} />
<Button
title="광고 시청하고 보상받기"
onPress={show}
disabled={!isLoaded}
/>
<Button title="리셋" onPress={reset} />
</View>
);
};hook 반환값
load
() ⇒ void
광고 로드
show
() ⇒ void
광고 표시
reset
() ⇒ void
광고 인스턴스 초기화
isReady
BOOLEAN
광고 준비 여부
isLoaded
BOOLEAN
광고 로드 여부
isOpened
BOOLEAN
광고 표시 여부
isClosed
BOOLEAN
광고 닫힘 여부
isClicked
BOOLEAN
광고 클릭 여부
isEarnRewarded
BOOLEAN
보상 획득 여부
reward
{ type: number; amount: number }
보상 정보
errorCode
STRING | UNDEFINED
에러 코드
2. Class 방식
import React, { useEffect, useState, useMemo } from 'react';
import { View, Button, Alert } from 'react-native';
import { AdropRewardedAd, type AdropListener } from 'adrop-ads-react-native';
const RewardedClassExample = () => {
const [rewardedAd, setRewardedAd] = useState<AdropRewardedAd>();
const [isLoaded, setIsLoaded] = useState(false);
const listener: AdropListener = useMemo(() => ({
onAdReceived: (ad) => {
console.log('광고 로드됨:', ad.unitId);
setIsLoaded(true);
},
onAdFailedToReceive: (ad, errorCode) => {
console.log('광고 로드 실패:', errorCode);
},
onAdDidPresentFullScreen: (ad) => {
console.log('광고 표시됨');
},
onAdDidDismissFullScreen: (ad) => {
console.log('광고 닫힘');
},
onAdEarnRewardHandler: (ad, type, amount) => {
console.log(`보상 획득! 타입: ${type}, 수량: ${amount}`);
Alert.alert('보상 획득!', `타입: ${type}, 수량: ${amount}`);
// 서버에 보상 지급 요청
},
}), []);
useEffect(() => {
const ad = new AdropRewardedAd('YOUR_UNIT_ID');
ad.listener = listener;
setRewardedAd(ad);
return () => {
ad.destroy();
};
}, [listener]);
const handleLoad = () => rewardedAd?.load();
const handleShow = () => rewardedAd?.show();
return (
<View>
<Button title="광고 로드" onPress={handleLoad} />
<Button title="광고 시청" onPress={handleShow} disabled={!isLoaded} />
</View>
);
};AdropRewardedAd 클래스
Properties
unitId
STRING
광고 Unit ID
isLoaded
BOOLEAN
광고 로드 여부
creativeId
STRING
광고 소재 ID
txId
STRING
광고 트랜잭션 ID
campaignId
STRING
캠페인 ID
destinationURL
STRING
클릭 시 이동 URL
listener
AdropListener
이벤트 리스너
AdropListener 인터페이스
type AdropListener = {
onAdReceived?: (ad: AdropAd) => void; // 광고 로드 성공
onAdClicked?: (ad: AdropAd) => void; // 광고 클릭
onAdImpression?: (ad: AdropAd) => void; // 광고 화면 노출
onAdFailedToReceive?: (ad: AdropAd, errorCode?: string) => void; // 광고 로드 실패
onAdDidPresentFullScreen?: (ad: AdropAd) => void; // 광고 전면 노출
onAdWillPresentFullScreen?: (ad: AdropAd) => void; // 광고 전면 노출 예정 (iOS only)
onAdDidDismissFullScreen?: (ad: AdropAd) => void; // 광고 닫힘
onAdWillDismissFullScreen?: (ad: AdropAd) => void; // 광고 닫힘 예정 (iOS only)
onAdFailedToShowFullScreen?: (ad: AdropAd, errorCode?: string) => void; // 광고 전면 노출 실패
onAdEarnRewardHandler?: (
ad: AdropAd,
type: number,
amount: number
) => void; // 광고 보상 지급
};광고 로드 실패, 전면 노출 실패 시, AdropErrorCode 를 확인해주세요
보상 콜백 파라미터
ad
AdropAd
광고 인스턴스
type
number
보상 타입
amount
number
보상 수량
광고 로드 및 표시 흐름
1. useAdropRewardedAd(unitId) 또는 new AdropRewardedAd(unitId)
↓
2. isReady === true 확인
↓
3. load() 호출
↓
4. onAdReceived 콜백 또는 isLoaded === true
↓
5. show() 호출
↓
6. onAdDidPresentFullScreen 콜백 또는 isOpened === true
↓
7. 사용자가 광고 끝까지 시청
↓
8. onAdEarnRewardHandler 콜백 또는 isEarnRewarded === true
→ 이 시점에 보상 지급!
↓
9. 사용자가 광고 닫음
↓
10. onAdDidDismissFullScreen 콜백
↓
11. 새 광고 필요시 reset() 호출 후 2번부터 반복주의 사항
광고는 로드 후에만 표시 할 수 있습니다.
사용자가 광고를 끝까지 시청해야 보상이 지급됩니다.
한 번 표시된 광고는 재사용 불가합니다.
컴포넌트 언마운트 시 반드시 destroy() 를 호출하여 리소스를 해제하세요.
Hook 사용 시 내부에서 자동으로
destroy를 처리합니다.
Last updated