מודעות באנר

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

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

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

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

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

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

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

/6499/example/adaptive-banner

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

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

הוספה AdManagerAdView לפריסה

השלב הראשון להצגת באנר הוא להציב את הסמל AdManagerAdView בפריסה של 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.
  AdManagerAdView adView = new AdManagerAdView(this);
  adView.setAdSizes(getAdSize());
  adView.setAdUnitId("/6499/example/adaptive-banner");

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

  // Start loading the ad in the background.
  AdManagerAdRequest adRequest = new AdManagerAdRequest.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 = AdManagerAdView(this)
  adView.adSizes = adSize
  adView.adUnitId = "/6499/example/adaptive-banner"

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

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

טעינת מודעה

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

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

Java

private void loadBanner() {
  // Create a new ad view.
  adView = new AdManagerAdView(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.
  AdManagerAdRequest adRequest = new AdManagerAdRequest.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 = AdManagerAdRequest.Builder().build()

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

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

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

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

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

Java

AdManagerAdView.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

AdManagerAdView.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() מופעלת כשמשתמש חוזר לאפליקציה אחרי שצפה בכתובת היעד של המודעה. האפליקציה יכולה להשתמש בה כדי להמשיך פעילויות שהושעו או לבצע כל עבודה אחרת שנדרשת כדי להכין את עצמה לאינטראקציה.
onAdFailedToLoad() ה-method onAdFailedToLoad() היא היחידה שכוללת פרמטר. פרמטר השגיאה מסוג LoadAdError מתאר מה השגיאה שאירעה. מידע נוסף זמין במסמכי התיעוד בנושא ניפוי באגים וטעינת מודעות.
onAdImpression() השיטה onAdImpression() מופעלת כאשר מתועדת חשיפה של מודעה.
onAdLoaded() השיטה onAdLoaded() מופעלת כשהטעינה של המודעה הסתיימה. אם רוצים לעכב את ההוספה של AdManagerAdView לפעילות או למקטע, עד שבטוחים שהמודעה תיטען, אפשר לעשות זאת כאן.
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>

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

ספירת חשיפות ידנית

ספירת החשיפות הידנית תואמת רק לקמפיינים במכירה ישירה ולקמפיינים של מודעות בית עם נכסי קריאייטיב שמועברים ישירות ב-Ad Manager. אין להשתמש בו למילוי חוסרים או למודעות ברשתות של צד שלישי. למידע נוסף תוכלו לקרוא את המאמר ספירה של חשיפות וקליקים.

אפשר לשלוח פינגים של חשיפות באופן ידני ל-Ad Manager אם יש תנאים מיוחדים שבהם צריך לתעד חשיפה. כדי לעשות זאת, צריך להפעיל AdManagerAdRequest לחשיפות ידניות לפני טעינת המודעה:

Java

AdManagerAdRequest adRequest = new AdManagerAdRequest.Builder()
    .setManualImpressionsEnabled(true)
    .build();

Kotlin

val adRequest = AdManagerAdRequest.Builder()
    .setManualImpressionsEnabled(true)
    .build()

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

Java

AdManagerAdView.recordManualImpression();

Kotlin

AdManagerAdView.recordManualImpression()

אירועים באפליקציה

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

אפשר להאזין לאירועים ספציפיים באפליקציה ב-Ad Manager באמצעות AppEventListener. האירועים האלה יכולים להתרחש בכל שלב במחזור החיים של המודעה, עוד לפני ההפעלה של onAdLoaded().

Java

public interface AppEventListener {
  void onAppEvent(String name, String info);
}

Kotlin

interface AppEventListener {
    fun onAppEvent(name: String, info: String)
}

הקריאה void onAppEvent(String name, String info) מופעלת כשמתרחש אירוע באפליקציה במודעה. אפשר להטמיע את הממשק הזה לפי הפעילות שלכם או כל אובייקט אחר:

Java

import com.google.android.gms.ads.admanager.*;

public class BannerExample extends Activity implements AppEventListener {
}

Kotlin

import com.google.android.gms.ads.admanager.*

class BannerExample : Activity(), AppEventListener {
}

ואז מועבר אל AdManagerAdView:

Java

AdManagerAdView.setAppEventListener(this);

Kotlin

AdManagerAdView.appEventListener = this

הדוגמה הבאה מראה איך לשנות את צבע הרקע של האפליקציה בהתאם לאירוע באפליקציה שנתתם לו שם של צבע:

Java

@Override
public void onAppEvent(String name, String info) {
  if ("color".equals(name)) {
    if ("green".equals(info)) {
      // Set background color to green.
    } else if ("blue".equals(info)) {
      // Set background color to blue.
    } else {
      // Set background color to black.
    }
  }
}

Kotlin

override fun onAppEvent(name: String?, info: String?) {
    if (name == "color") {
        when (info) {
            "green" -> {
                // Set background color to green.
            }
            "blue" -> {
                // Set background color to blue.
            }
            else -> {
                // Set background color to black.
            }
        }
    }
}

והנה הקריאייטיב התואם ששולח הודעות על אירועים צבעוניים באפליקציה ל-listener:

<html>
<head>
  <script src="//www.gstatic.com/afma/api/v1/google_mobile_app_ads.js"></script>
  <script>
    document.addEventListener("DOMContentLoaded", function() {
      // Send a color=green event when ad loads.
      admob.events.dispatchAppEvent("color", "green");

      document.getElementById("ad").addEventListener("click", function() {
        // Send a color=blue event when ad is clicked.
        admob.events.dispatchAppEvent("color", "blue");
      });
    });
  </script>
  <style>
    #ad {
      width: 320px;
      height: 50px;
      top: 0px;
      left: 0px;
      font-size: 24pt;
      font-weight: bold;
      position: absolute;
      background: black;
      color: white;
      text-align: center;
    }
  </style>
</head>
<body>
  <div id="ad">Carpe diem!</div>
</body>
</html>

ראו את הדוגמה 'אירועים באפליקציה ב-Ad Manager' להטמעה של אירועי אפליקציה באפליקציית ההדגמה של ה-API.

Java קוטלין

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

דוגמאות ב-GitHub

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

השלבים הבאים

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

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

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

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

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