מודעות באנר

הפלטפורמה: Android iOS Unity Flutter

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

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

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

  • כדאי לעיין במדריך לתחילת העבודה.
  • אופציונלי: כדי לראות הטמעה לדוגמה של מודעות באנר, בוחרים באחת מהאפליקציות לדוגמה הבאות:
    • דוגמה למודעות באנר מעוגנות בגודל מותאם ב-Java, ב-Kotlin או ב-Jetpack Compose.
    • הדגמה של התכונות המתקדמות של Java או Kotlin.

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

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

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

ca-app-pub-3940256099942544/9214589741

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

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

הגדרת הצפייה במודעה

פריסת XML

מוסיפים תצוגה לקובץ הפריסה ב-XML כדי שתשמש כקונטיינר למודעת הבאנר המותאם שמוצמדת:

<!-- Ad view container that fills the width of the screen and adjusts its
    height to the content of the ad. -->
<FrameLayout
        android:id="@+id/ad_view_container"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_centerInParent="true"
        android:layout_alignParentBottom="true" />

Jetpack פיתוח נייטיב

  1. כוללים את המודול JetpackComposeDemo/compose-util. המודול הזה כולל כלים לעריכת האובייקט AdView והנכסים.

  2. כתיבת שיעור BannerAd מהמודול compose-util:


// Place the ad view at the bottom of the screen.
Column(modifier = modifier.fillMaxSize(), verticalArrangement = Arrangement.Bottom) {
  Box(modifier = modifier.fillMaxWidth()) { BannerAd(adView, modifier) }
}

הגדרת גודל המודעה

מגדירים את AdSize לסוג של מודעת באנר מותאמת מסוג עוגן עם רוחב מוגדר:

Java

// Request an anchored adaptive banner with a width of 360.
adView.setAdSize(AdSize.getCurrentOrientationAnchoredAdaptiveBannerAdSize(this, 360));

Kotlin

// Request an anchored adaptive banner with a width of 360.
adView.setAdSize(AdSize.getCurrentOrientationAnchoredAdaptiveBannerAdSize(this, 360))

Jetpack פיתוח נייטיב


// Set the adaptive banner ad size with a given width.
val adSize = AdSize.getCurrentOrientationAnchoredAdaptiveBannerAdSize(LocalContext.current, 360)
adView.setAdSize(adSize)

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

יוצרים AdView באמצעות גודל המודעה כדי להוסיף לפריסה של האפליקציה:

Java


// Create a new ad view.
adView = new AdView(this);
adView.setAdUnitId(AD_UNIT_ID);
// Request an anchored adaptive banner with a width of 360.
adView.setAdSize(AdSize.getCurrentOrientationAnchoredAdaptiveBannerAdSize(this, 360));

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

Kotlin


// Create a new ad view.
val adView = AdView(this)
adView.adUnitId = AD_UNIT_ID
// Request an anchored adaptive banner with a width of 360.
adView.setAdSize(AdSize.getCurrentOrientationAnchoredAdaptiveBannerAdSize(this, 360))
this.adView = adView

// Replace ad container with new ad view.
binding.adViewContainer.removeAllViews()
binding.adViewContainer.addView(adView)

Jetpack פיתוח נייטיב


val adView = remember { AdView(context) }

// Setup and load the adview.
// Set the unique ID for this specific ad unit.
adView.adUnitId = BANNER_AD_UNIT_ID

// Set the adaptive banner ad size with a given width.
val adSize = AdSize.getCurrentOrientationAnchoredAdaptiveBannerAdSize(LocalContext.current, 360)
adView.setAdSize(adSize)

// Place the ad view at the bottom of the screen.
Column(modifier = modifier.fillMaxSize(), verticalArrangement = Arrangement.Bottom) {
  Box(modifier = modifier.fillMaxWidth()) { BannerAd(adView, modifier) }
}

טעינת מודעה

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

הנה דוגמה שמראה איך לטעון מודעה:

Java

AdRequest adRequest = new AdRequest.Builder().build();
adView.loadAd(adRequest);

Kotlin

val adRequest = AdRequest.Builder().build()
adView.loadAd(adRequest)

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

רענון מודעה

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

הפצת משאב למודעה

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

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

Java

public void destroyBanner() {
  // Remove banner from view hierarchy.
  if (adView != null) {
    View parentView = (View) adView.getParent();
    if (parentView instanceof ViewGroup) {
      ((ViewGroup) parentView).removeView(adView);
    }

    // Destroy the banner ad resources.
    adView.destroy();
  }

  // Drop reference to the banner ad.
  adView = null;
}

Kotlin

fun destroyBanner() {
  // Remove banner from view hierarchy.
  val parentView = adView?.parent
  if (parentView is ViewGroup) {
    parentView.removeView(adView)
  }

  // Destroy the banner ad resources.
  adView?.destroy()

  // Drop reference to the banner ad.
  adView = null
}

אירועים שקשורים למודעות

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

Java

if (adView != null) {
  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(@NonNull 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() מופעלת כשמשתמש חוזר לאפליקציה אחרי צפייה בכתובת היעד של מודעה. האפליקציה יכולה להשתמש בה כדי להמשיך פעילויות שהושעו או לבצע כל פעולה אחרת שנדרשת כדי להתכונן לאינטראקציה. ב-AdMob AdListener example אפשר לראות הטמעה של רכיבי ה-method של AdListener באפליקציית ההדגמה של 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>

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

השלבים הבאים

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

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

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

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

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