באנר

מודעות באנר תופסות מקום בפריסה של האפליקציה, בחלק העליון או התחתון של במסך המכשיר. הם נשארים במסך בזמן שהמשתמשים יוצרים אינטראקציה עם האפליקציה, ויכולים לרענן אותו באופן אוטומטי אחרי פרק זמן מסוים.

במדריך הזה תלמדו איך לשלב מודעות באנר מ-AdMob אפליקציית Flutter. בנוסף לקטעי הקוד ולהוראות, המאמר כולל גם על שינוי גודל תקין של מודעות באנר.

ביצוע בדיקות באמצעות מודעות בדיקה תמיד

כשיוצרים ובודקים אפליקציות, חשוב להשתמש במודעות בדיקה במקום במודעות בדיקה של מודעות בשידור חי. אם לא תעשו זאת, ייתכן שהחשבון שלכם יושעה.

הדרך הקלה ביותר לטעון מודעות בדיקה היא להשתמש במזהה הייעודי של יחידת מודעות לבדיקה עבור באנרים:

Android

ca-app-pub-3940256099942544/6300978111

iOS

ca-app-pub-3940256099942544/2934735716

יחידות המודעות לבדיקה מוגדרות כך שיחזירו מודעות בדיקה לכל בקשה, וכן ניתן להשתמש בהם באפליקציות משלכם תוך כדי תכנות, בדיקות וניפוי באגים. רק צריך להחליף אותם במזהים של יחידות המודעות לפני שמפרסמים את אפליקציה.

טעינת מודעה

הדוגמה הבאה יוצרת מודעת באנר:

class BannerExampleState extends State<BannerExample> {
  BannerAd? _bannerAd;
  bool _isLoaded = false;

  // TODO: replace this test ad unit with your own ad unit.
  final adUnitId = Platform.isAndroid
    ? 'ca-app-pub-3940256099942544/6300978111'
    : 'ca-app-pub-3940256099942544/2934735716';

  /// Loads a banner ad.
  void loadAd() {
    _bannerAd = BannerAd(
      adUnitId: adUnitId,
      request: const AdRequest(),
      size: AdSize.banner,
      listener: BannerAdListener(
        // Called when an ad is successfully received.
        onAdLoaded: (ad) {
          debugPrint('$ad loaded.');
          setState(() {
            _isLoaded = true;
          });
        },
        // Called when an ad request failed.
        onAdFailedToLoad: (ad, err) {
          debugPrint('BannerAd failed to load: $error');
          // Dispose the ad here to free resources.
          ad.dispose();
        },
      ),
    )..load();
  }
}

בטבלה הבאה מפורטים הגדלים הרגילים של מודעות הבאנר.

גודל ב-dp (WxH) תיאור קבוע בגודל המודעה
320x50 כרזות רגילות banner
320x100 מודעת באנר גדולה largeBanner
320x250 מלבן בינוני mediumRectangle
468x60 מודעת באנר בגודל מלא fullBanner
728x90 רשימת המובילים leaderboard
רוחב שסופק x גובה מותאם מודעת באנר מותאמת לא רלוונטי

כדי להגדיר גודל באנר מותאם אישית, מגדירים את AdSize המועדף:

final AdSize adSize = AdSize(300, 50);

בעזרת BannerAdListener, אפשר להאזין לאירועים במחזור החיים, כמו כשמודעה נטענת. בדוגמה הזו אנחנו מיישמים כל שיטה ומתעדת הודעה ביומן למסוף:

class BannerExampleState extends State<BannerExample> {
  BannerAd? _bannerAd;
  bool _isLoaded = false;

  // TODO: replace this test ad unit with your own ad unit.
  final adUnitId = Platform.isAndroid
    ? 'ca-app-pub-3940256099942544/6300978111'
    : 'ca-app-pub-3940256099942544/2934735716';


  /// Loads a banner ad.
  void loadAd() {
    _bannerAd = BannerAd(
      adUnitId: adUnitId,
      request: const AdRequest(),
      size: AdSize.banner,
      listener: BannerAdListener(
        // Called when an ad is successfully received.
        onAdLoaded: (ad) {
          debugPrint('$ad loaded.');
          setState(() {
            _isLoaded = true;
          });
        },
        // Called when an ad request failed.
        onAdFailedToLoad: (ad, err) {
          debugPrint('BannerAd failed to load: $error');
          // Dispose the ad here to free resources.
          ad.dispose();
        },
        // Called when an ad opens an overlay that covers the screen.
        onAdOpened: (Ad ad) {},
        // Called when an ad removes an overlay that covers the screen.
        onAdClosed: (Ad ad) {},
        // Called when an impression occurs on the ad.
        onAdImpression: (Ad ad) {},
      ),
    )..load();
  }
}

הצגה של מודעת באנר

כדי להציג BannerAd כווידג'ט, צריך ליצור AdWidget עם מודעה נתמכת אחרי חיוג אל load(). אפשר ליצור את הווידג'ט לפני קוראים לפונקציה load(), אבל צריך לקרוא ל-load() לפני שמוסיפים את המספר לווידג'ט עץ.

AdWidget יורש את המחלקה 'ווידג'ט' של Flutter ואפשר להשתמש בו כמו בכל מכשיר אחר לווידג'ט הזה. ב-iOS, צריך לוודא שממקמים את הווידג'ט בווידג'ט שצוין בו רוחב וגובה. אחרת, ייתכן שהמודעה לא תוצג. BannerAd ניתן למקם בתוך מכל בגודל שתואם למודעה:

...
if (_bannerAd != null) {
  Align(
    alignment: Alignment.bottomCenter,
    child: SafeArea(
      child: SizedBox(
        width: _bannerAd!.size.width.toDouble(),
        height: _bannerAd!.size.height.toDouble(),
        child: AdWidget(ad: _bannerAd!),
      ),
    ),
  )
}
...

מודעה חייבת להשליך כאשר אין יותר צורך בגישה אליה. השיטה המומלצת מתי הקריאה אל dispose() היא אחרי הסרת AdWidget בעץ הווידג'ט או ב-BannerAdListener.onAdFailedToLoad() קריאה חוזרת.

זהו! האפליקציה מוכנה עכשיו להצגת מודעות באנר.

מגבלת גלילה ב-Android מגרסה 9 ומטה

אנחנו יודעים שיש מכשירים ישנים יותר או פחות חזקים עם Android 9 או לפני כן עשויים להיות ביצועים לא אופטימליים כשמציגים מודעות באנר מוטבעות בתצוגות גלילה. אנחנו ממליצים בלבד שימוש בסוגים האלה של מודעות באנר ב-Android 10 ואילך. מודעות באנר במיקום קבוע, כמו מודעות באנר מעוגנות לא מושפעות, ואפשר להשתמש בהן עם ביצועים אופטימליים בכל רמות ה-API של Android.

הקישור המלא ב-GitHub

באנר