מודעות מותאמות

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

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

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

בדף הזה מוסבר איך להשתמש ב-SDK כדי לטעון מודעות מותאמות.

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

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

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

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

/21775744923/example/native

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

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

טעינת מודעות

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

פיתוח AdLoader

הקוד הבא ממחיש איך ליצור AdLoader שיכול לטעון מודעות מותאמות אישית:

Java

AdLoader adLoader = new AdLoader.Builder(context, "/21775744923/example/native")
    .forNativeAd(new NativeAd.OnNativeAdLoadedListener() {
        @Override
        public void onNativeAdLoaded(NativeAd nativeAd) {
            // Show the ad.
        }
    })
    .withAdListener(new AdListener() {
        @Override
        public void onAdFailedToLoad(LoadAdError adError) {
            // Handle the failure by logging, altering the UI, and so on.
        }
    })
    .withNativeAdOptions(new NativeAdOptions.Builder()
            // Methods in the NativeAdOptions.Builder class can be
            // used here to specify individual options settings.
            .build())
    .build();

Kotlin

val adLoader = AdLoader.Builder(this, "/21775744923/example/native}")
    .forNativeAd { ad : NativeAd ->
        // Show the ad.
    }
    .withAdListener(object : AdListener() {
        override fun onAdFailedToLoad(adError: LoadAdError) {
            // Handle the failure.
        }
    })
    .withNativeAdOptions(NativeAdOptions.Builder()
            // Methods in the NativeAdOptions.Builder class can be
            // used here to specify individual options settings.
            .build())
    .build()

השיטה forNativeAd() אחראית על הכנת ה-AdLoader לפורמט NativeAd. כשמודעה נטענת בהצלחה, מתבצעת קריאה ל-method‏ onNativeAdLoaded() של אובייקט המאזין.

הגדרת AdListener באמצעות AdLoader (אופציונלי)

כשיוצרים את AdLoader, הפונקציה withAdListener מגדירה את AdListener למטען. השיטה מקבלת פרמטר יחיד מסוג AdListener, שמקבל קריאות חזרה (callbacks) מה-AdLoader כשמתרחשים אירועים במחזור החיים של המודעה:

Java

.withAdListener(new AdListener() {
    // AdListener callbacks can be overridden here.
})

Kotlin

.withAdListener(object : AdListener() {
    // AdListener callbacks can be overridden here.
})

בקשה להצגת מודעות

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

loadAd()

ה-method הזה שולח בקשה להצגת מודעה אחת.

Java

adLoader.loadAd(new AdManagerAdRequest.Builder().build());

Kotlin

adLoader.loadAd(AdManagerAdRequest.Builder().build())

קריאות חזרה

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

הפצת משאבים

חשוב להשתמש בשיטה destroy() במודעות מותאמות טעונות. כך משחררים משאבים בשימוש ומונעים דליפות זיכרון.

חשוב לוודא שכל ההפניות ל-NativeAd נהרסות ב-method‏ onDestroy() של הפעילות.

בקריאה החוזרת (callback) של onNativeAdLoaded, חשוב למחוק את כל המודעות הנתמכות הקיימות שיבוטל בהן ההפניה (dereference).

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

Java

final AdLoader adLoader = new AdLoader.Builder(this, "/21775744923/example/native")
        .forNativeAd(new NativeAd.OnNativeAdLoadedListener() {
    @Override
    public void onNativeAdLoaded(NativeAd nativeAd) {
        // If this callback occurs after the activity is destroyed, you
        // must call destroy and return or you may get a memory leak.
        // Note `isDestroyed()` is a method on Activity.
        if (isDestroyed()) {
            nativeAd.destroy();
            return;
        }
        ...
    }
}).build();

Kotlin

lateinit var adLoader: AdLoader
...
adLoader = AdLoader.Builder(this, "/21775744923/example/native")
    .forNativeAd { nativeAd ->
        // If this callback occurs after the activity is destroyed, you
        // must call destroy and return or you may get a memory leak.
        // Note `isDestroyed` is a method on Activity.
        if (isDestroyed) {
            nativeAd.destroy()
            return@forNativeAd
        }
        ...
    }.build()

שיטות מומלצות

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

  • באפליקציות שמשתמשות במודעות מותאמות ברשימה, צריך לשמור מראש את רשימת המודעות במטמון.

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

  • אין להפעיל את loadAd() ב-AdLoader עד שהטעינה של הבקשה הראשונה תסתיים.

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

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

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

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

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

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

הצגת המודעה

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