מודעות באנר

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

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

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

דרישות מוקדמות

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

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

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

ca-app-pub-3940256099942544/9214589741

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

במאמר מודעות בדיקה מוסבר איך פועלות מודעות הבדיקה של Mobile Ads SDK.

הוספה AdView לפריסה

השלב הראשון להצגת באנר הוא להציב את הסמל AdView בפריסה של Activity או של Fragment שבה רוצים להציג אותו.:

Java

private AdSize getAdSize() {
  // Determine the screen width (less decorations) to use for the ad width.
  Display display = getWindowManager().getDefaultDisplay();
  DisplayMetrics outMetrics = new DisplayMetrics();
  display.getMetrics(outMetrics);

  float density = outMetrics.density;

  float adWidthPixels = adContainerView.getWidth();

  // If the ad hasn't been laid out, default to the full screen width.
  if (adWidthPixels == 0) {
    adWidthPixels = outMetrics.widthPixels;
  }

  int adWidth = (int) (adWidthPixels / density);
  return AdSize.getCurrentOrientationAnchoredAdaptiveBannerAdSize(this, adWidth);
}

private void loadBanner() {
  
  // Create a new ad view.
  AdView adView = new AdView(this);
  adView.setAdSizes(getAdSize());
  adView.setAdUnitId("ca-app-pub-3940256099942544/9214589741");

  // Replace ad container with new ad view.
  adContainerView.removeAllViews();
  adContainerView.addView(adView);

  // Start loading the ad in the background.
  AdRequest adRequest = new AdRequest.Builder().build();
  adView.loadAd(adRequest);
}

Kotlin


// Determine the screen width (less decorations) to use for the ad width.
// If the ad hasn't been laid out, default to the full screen width.
private val adSize: AdSize
  get() {
    val display = windowManager.defaultDisplay
    val outMetrics = DisplayMetrics()
    display.getMetrics(outMetrics)

    val density = outMetrics.density

    var adWidthPixels = binding.adViewContainer.width.toFloat()
    if (adWidthPixels == 0f) {
      adWidthPixels = outMetrics.widthPixels.toFloat()
    }

    val adWidth = (adWidthPixels / density).toInt()
    return AdSize.getCurrentOrientationAnchoredAdaptiveBannerAdSize(this, adWidth)
  }

private fun loadBanner() {
  
  // Create a new ad view.
  val adView = AdView(this)
  adView.adSizes = adSize
  adView.adUnitId = "ca-app-pub-3940256099942544/9214589741"

  // Create an ad request.
  val adRequest = AdRequest.Builder().build()

  // Start loading the ad in the background.
  adView.loadAd(adRequest)
}

טעינת מודעה

אחרי שמגדירים את AdView , השלב הבא הוא טעינת מודעה. הפעולה הזו מתבצעת באמצעות ה-method loadAd() במחלקה AdView. נדרש פרמטר AdRequest, שכולל מידע על זמן הריצה, כמו פרטי טירגוט, על בקשה יחידה להצגת מודעה.

לפניכם דוגמה שמראה איך לטעון מודעה בשיטה onCreate() של Activity:

Java

private void loadBanner() {
  // Create a new ad view.
  adView = new AdView(this);
  adView.setAdUnitId(AD_UNIT);
  adView.setAdSize(getAdSize());
  
  // Replace ad container with new ad view.
  adContainerView.removeAllViews();
  adContainerView.addView(adView);

  // Start loading the ad in the background.
  AdRequest adRequest = new AdRequest.Builder().build();
  adView.loadAd(adRequest);
}

Kotlin

private fun loadBanner() {
  // This is an ad unit ID for a test ad. Replace with your own banner ad unit ID.
  adView.adUnitId = "/6499/example/banner"
  adView.setAdSize(adSize)
  
  // Create an ad request.
  val adRequest = AdRequest.Builder().build()

  // Start loading the ad in the background.
  adView.loadAd(adRequest)
}

אם טעינת המודעה נכשלת, אין צורך לבקש מודעה נוספת באופן מפורש כל עוד הגדרתם את יחידת המודעות לרענון. Google Mobile Ads SDK מכבד כל קצב רענון שציינתם בממשק האינטרנט של AdMob. אם לא הפעלתם את הרענון, תצטרכו לשלוח בקשה חדשה.

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

אירועי מודעות

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

Java

AdView.setAdListener(new AdListener() {
    @Override
    public void onAdClicked() {
      // Code to be executed when the user clicks on an ad.
    }

    @Override
    public void onAdClosed() {
      // Code to be executed when the user is about to return
      // to the app after tapping on an ad.
    }

    @Override
    public void onAdFailedToLoad(LoadAdError adError) {
      // Code to be executed when an ad request fails.
    }

    @Override
    public void onAdImpression() {
      // Code to be executed when an impression is recorded
      // for an ad.
    }

    @Override
    public void onAdLoaded() {
      // Code to be executed when an ad finishes loading.
    }

    @Override
    public void onAdOpened() {
      // Code to be executed when an ad opens an overlay that
      // covers the screen.
    }
});

Kotlin

AdView.adListener = object: AdListener() {
    override fun onAdClicked() {
      // Code to be executed when the user clicks on an ad.
    }

    override fun onAdClosed() {
      // Code to be executed when the user is about to return
      // to the app after tapping on an ad.
    }

    override fun onAdFailedToLoad(adError : LoadAdError) {
      // Code to be executed when an ad request fails.
    }

    override fun onAdImpression() {
      // Code to be executed when an impression is recorded
      // for an ad.
    }

    override fun onAdLoaded() {
      // Code to be executed when an ad finishes loading.
    }

    override fun onAdOpened() {
      // Code to be executed when an ad opens an overlay that
      // covers the screen.
    }
}

כל אחת מהשיטות שניתן לשנות ב-AdListener תואמת לאירוע במחזור החיים של מודעה.

שיטות שניתנות לשינוי
onAdClicked() השיטה onAdClicked() מופעלת כשמתועד קליק על מודעה.
onAdClosed() השיטה onAdClosed() מופעלת כשמשתמש חוזר לאפליקציה אחרי שצפה בכתובת היעד של המודעה. האפליקציה יכולה להשתמש בה כדי להמשיך פעילויות שהושעו או לבצע כל עבודה אחרת שנדרשת כדי להכין את עצמה לאינטראקציה. בדוגמה AdListener של AdMob אפשר לראות איך להטמיע את שיטות האזנה למודעות באפליקציית ההדגמה של Android API.
onAdFailedToLoad() ה-method onAdFailedToLoad() היא היחידה שכוללת פרמטר. פרמטר השגיאה מסוג LoadAdError מתאר מה השגיאה שאירעה. מידע נוסף זמין במסמכי התיעוד בנושא ניפוי באגים וטעינת מודעות.
onAdImpression() השיטה onAdImpression() מופעלת כאשר מתועדת חשיפה של מודעה.
onAdLoaded() השיטה onAdLoaded() מופעלת כשהטעינה של המודעה הסתיימה. אם רוצים לעכב את ההוספה של AdView לפעילות או למקטע, עד שבטוחים שהמודעה תיטען, אפשר לעשות זאת כאן.
onAdOpened() השיטה onAdOpened() מופעלת כשמודעה פותחת שכבת-על שמכסה את המסך.

שיפור המהירות באמצעות חומרה במודעות וידאו

כדי שמודעות הווידאו יוכלו להופיע בתצוגות של מודעות הבאנר, צריך להפעיל את שיפור המהירות באמצעות חומרה.

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

איך מפעילים את שיפור המהירות באמצעות חומרה

אם האפליקציה לא פועלת כמו שצריך כשההגדרה 'שיפור מהירות באמצעות חומרה' מופעלת באופן גלובלי, אפשר לשלוט בה גם בפעילויות ספציפיות. כדי להפעיל או להשבית את שיפור המהירות באמצעות חומרה, אפשר להשתמש במאפיין android:hardwareAccelerated לרכיבים <application> ו-<activity> ב-AndroidManifest.xml. הדוגמה הבאה מפעילה האצת חומרה לכל האפליקציה, אבל משביתה אותה בפעילות אחת:

<application android:hardwareAccelerated="true">
    <!-- For activities that use ads, hardwareAcceleration should be true. -->
    <activity android:hardwareAccelerated="true" />
    <!-- For activities that don't use ads, hardwareAcceleration can be false. -->
    <activity android:hardwareAccelerated="false" />
</application>

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

מקורות מידע נוספים

דוגמאות ב-GitHub

  • דוגמה למודעות באנר מותאמות ומעוגנות: Java | Kotlin
  • הדגמה של תכונות מתקדמות: Java | Kotlin

השלבים הבאים

מודעות באנר שאפשר לכווץ

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

מודעות באנר מותאמות שמוצגות בתוך הטקסט

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

עוד נושאים מעניינים