React Native 보상형 광고
사용자가 광고를 끝까지 시청하면 보상을 제공하는 광고입니다.
시작하기 전에
1
2
사용 방법
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 반환값
Parameter
Type
Description
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 클래스
Parameter
Type
Description
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; // 광고 보상 지급
};보상 콜백 파라미터
파라미터
타입
설명
광고 로드 및 표시 흐름
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번부터 반복주의 사항
Last updated