광고 보상형 광고는 사용자가 광고를 시청하거나 특정 작업을 수행함으로써 보상을 받는 광고 형식입니다.
사용자가 자발적으로 광고를 시청하거나 특정 액션을 수행하기 때문에 보다 높은 관심과 참여도를 보이는 장점을 가지고 있습니다.
다음 가이드를 통해 서비스에 보상형 광고를 적용할 수 있습니다.
1 단계: (선택 사항) 이벤트 리스너 선언하기
final AdropRewardedListener listener = AdropRewardedListener(
onAdReceived: (ad) =>
debugPrint('Adrop Rewarded Ad loaded with unitId ${ad.unitId}!'),
onAdFailedToReceive: (ad, errorCode) =>
debugPrint('error in ${ad.unitId} while loading: $errorCode'),
onAdFailedToShowFullScreen: (ad, errorCode) =>
debugPrint('error in ${ad.unitId} while showing: $errorCode'),
onAdEarnRewardHandler: (ad, type, amount) {
debugPrint('Adrop Rewarded Ad earn rewards: ${ad.unitId}, $type, $amount');
// implement your actions with rewards
},
...
);
class YourComponent extends StatefulWidget {
const YourComponent({super.key});
@override
State<StatefulWidget> createState() => _YourComponentState();
}
class _YourComponentState extends State<YourComponent> {
final AdropRewardedAd rewardedAd = AdropRewardedAd(
// 0 단계에서 복사한 UNIT_ID를 입력해주세요. 테스트를 원한다면, 가이드 위의 테스트 유닛 아이디를 사용해 주세요.
unitId: 'YOUR_UNIT_ID or TEST_UNIT_ID',
listener: listener,
);
@override
void initState() {
super.initState();
rewardedAd.load();
}
@override
Widget build(BuildContext context) {
return Scaffold(
body: Center(
child: TextButton(
onPressed: () {
final isLoaded = rewardedAd?.isLoaded ?? false;
if (isLoaded) {
rewardedAd.show();
} else {
ScaffoldMessenger.of(context).showSnackBar(
const SnackBar(content: Text('rewarded ad is loading...'))
);
}
},
child: const Text('display ad'),
),
),
);
}
}
AdropRewardedView에 더 이상 액세스할 필요가 없으면 다음과 같이 Dispose해야 합니다.
@override
void dispose() {
super.dispose();
rewardedAd.dispose();
}
console에서 발급받은 unitId가 한 번이라도 request 가 들어가면 성공적으로 연결됩니다.