מודעות מתגמלות הן מודעות שהמשתמשים יכולים ליצור איתן אינטראקציה בתמורה לתגמולים באפליקציה. במדריך הזה מוסבר איך לשלב מודעות מתגמלות מ-AdMob באפליקציה של Flutter.
תמיד כדאי לבדוק באמצעות מודעות בדיקה
כשאתם מפתחים ובודקים את האפליקציות, חשוב להשתמש במודעות בדיקה במקום במודעות פעילות בסביבת הייצור. אם לא תעשו זאת, החשבון שלכם עלול להיחסם.
הדרך הקלה ביותר לטעון מודעות בדיקה היא להשתמש במזהה הייעודי של יחידת המודעות לבדיקה של מודעות תמורת פרסים:
Android
ca-app-pub-3940256099942544/5224354917
iOS
ca-app-pub-3940256099942544/1712485313
יחידות המודעות לבדיקה מוגדרות כך שיחזירו מודעות בדיקה לכל בקשה, ותוכלו להשתמש בהן באפליקציות שלכם בזמן התכנות, הבדיקה וניפוי הבאגים. רק חשוב להחליף אותם במזהי יחידות המודעות שלכם לפני פרסום האפליקציה.
טעינת מודעה
כך נטען מודעה מתגמלת בדוגמה הבאה:
class RewardedExampleState extends State<RewardedExample> { RewardedAd? _rewardedAd; // TODO: replace this test ad unit with your own ad unit. final adUnitId = Platform.isAndroid ? 'ca-app-pub-3940256099942544/5224354917' : 'ca-app-pub-3940256099942544/1712485313'; /// Loads a rewarded ad. void loadAd() { RewardedAd.load( adUnitId: adUnitId, request: const AdRequest(), adLoadCallback: RewardedAdLoadCallback( // Called when an ad is successfully received. onAdLoaded: (ad) { debugPrint('$ad loaded.'); // Keep a reference to the ad so you can show it later. _rewardedAd = ad; }, // Called when an ad request failed. onAdFailedToLoad: (LoadAdError error) { debugPrint('RewardedAd failed to load: $error'); }, )); } }
אירועים של מודעות מתגמלות
באמצעות FullScreenContentCallback
, אפשר להאזין לאירועים במחזור החיים של המודעה, למשל כשהמודעה מוצגת או נסגרת. כדי לקבל התראות על האירועים האלה, צריך להגדיר את RewardedAd.fullScreenContentCallback
לפני הצגת המודעה. הדוגמה הבאה מממשת כל method ורושמת הודעה במסוף:
class RewardedExampleState extends State<RewardedExample> { RewardedAd? _rewardedAd; // TODO: replace this test ad unit with your own ad unit. final adUnitId = Platform.isAndroid ? 'ca-app-pub-3940256099942544/5224354917' : 'ca-app-pub-3940256099942544/1712485313'; /// Loads a rewarded ad. void loadAd() { RewardedAd.load( adUnitId: adUnitId, request: const AdRequest(), adLoadCallback: RewardedAdLoadCallback( // Called when an ad is successfully received. onAdLoaded: (ad) { ad.fullScreenContentCallback = FullScreenContentCallback( // Called when the ad showed the full screen content. onAdShowedFullScreenContent: (ad) {}, // Called when an impression occurs on the ad. onAdImpression: (ad) {}, // Called when the ad failed to show full screen content. onAdFailedToShowFullScreenContent: (ad, err) { // Dispose the ad here to free resources. ad.dispose(); }, // Called when the ad dismissed full screen content. onAdDismissedFullScreenContent: (ad) { // Dispose the ad here to free resources. ad.dispose(); }, // Called when a click is recorded for an ad. onAdClicked: (ad) {}); debugPrint('$ad loaded.'); // Keep a reference to the ad so you can show it later. _rewardedAd = ad; }, // Called when an ad request failed. onAdFailedToLoad: (LoadAdError error) { debugPrint('RewardedAd failed to load: $error'); }, )); } }
מודעה ברשת המדיה
RewardedAd
מוצג כשכבת-על מעל כל תוכן האפליקציה וממוקם באופן סטטי, ולכן אי אפשר להוסיף אותו לעץ הווידג'טים של Flutter. ניתן לבחור מתי להציג את המודעה על ידי שליחת קריאה למספר show()
.
הפונקציה RewardedAd.show()
מקבלת OnUserEarnedRewardCallback
, שמופעל כשהמשתמש מרוויח פרס. חשוב להטמיע את התכונה הזו ולתגמל את המשתמש על צפייה במודעה.
_rewardedAd.show(onUserEarnedReward: (AdWithoutView ad, RewardItem rewardItem) { // Reward the user for watching an ad. });
אחרי הקריאה ל-show()
, אי אפשר להסיר באופן פרוגרמטי Ad
שמוצג כך, ונדרש קלט של משתמשים. אפשר להציג RewardedAd
רק פעם אחת. קריאות חוזרות להצגה יפעילו את onAdFailedToShowFullScreenContent
.
צריך להיפטר ממודעה כשאין יותר צורך בגישה אליה. השיטה המומלצת לקריאה ל-dispose()
היא בקריאות החוזרות FullScreenContentCallback.onAdDismissedFullScreenContent
ו-FullScreenContentCallback.onAdFailedToShowFullScreenContent
.
זהו! האפליקציה מוכנה עכשיו להצגת מודעות מתגמלות.