מודעות באנר

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

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

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

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

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

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

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

/21775744923/example/adaptive-banner

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

מידע נוסף על אופן הפעולה של מודעות הבדיקה של Mobile Ads SDK זמין במאמר מודעות בדיקה.

מוסיפים את AdManagerAdView לפריסה

כדי ליצור באנר, קובעים את גודל המודעה. מבצעים את השלבים הבאים:

  1. יוצרים מודעה מותאמת ברוחב מלא עם עיגון:

    Java

    // Get the ad size with screen width.
    public AdSize getAdSize() {
      DisplayMetrics displayMetrics = getResources().getDisplayMetrics();
      int adWidthPixels = displayMetrics.widthPixels;
    
      if (VERSION.SDK_INT >= VERSION_CODES.R) {
        WindowMetrics windowMetrics = this.getWindowManager().getCurrentWindowMetrics();
        adWidthPixels = windowMetrics.getBounds().width();
      }
    
      float density = displayMetrics.density;
      int adWidth = (int) (adWidthPixels / density);
      return AdSize.getCurrentOrientationAnchoredAdaptiveBannerAdSize(this, adWidth);
    }
    

    Kotlin

    // Get the ad size with screen width.
    private val adSize: AdSize
      get() {
        val displayMetrics = resources.displayMetrics
        val adWidthPixels =
          if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.R) {
            val windowMetrics: WindowMetrics = this.windowManager.currentWindowMetrics
            windowMetrics.bounds.width()
          } else {
            displayMetrics.widthPixels
          }
        val density = displayMetrics.density
        val adWidth = (adWidthPixels / density).toInt()
        return AdSize.getCurrentOrientationAnchoredAdaptiveBannerAdSize(this, adWidth)
      }
    
    
  2. יוצרים AdManagerAdView לפי גודל המודעה ומוסיפים אותו לפריסה של האפליקציה:

    Java

    // 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);
    

    Kotlin

    // Create a new ad view.
    val adView = AdManagerAdView(this)
    adView.adUnitId = AD_UNIT_ID
    adView.setAdSize(adSize)
    this.adView = adView
    
    // Replace ad container with new ad view.
    binding.adViewContainer.removeAllViews()
    binding.adViewContainer.addView(adView)
    

טעינת מודעה

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

דוגמה לאופן שבו אפשר לטעון מודעה:

Java

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

Kotlin

// Start loading the ad in the background.
val adRequest = AdManagerAdRequest.Builder().build()
adView.loadAd(adRequest)

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

רענון מודעה

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

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

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

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

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

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>

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

Java Kotlin

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

דוגמאות ב-GitHub

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

השלבים הבאים

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

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

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

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

נושאים נוספים