מודעות באנר

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

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

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

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

Java

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

Kotlin

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

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

Java

{ ad_view }.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) כשמתרחש אירוע באפליקציה במודעה. אפשר להטמיע את הממשק הזה בפעילות שלכם או בכל כלי אחר object:

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 | קוטלין

השלבים הבאים

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

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

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

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

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