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

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

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

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

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

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

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

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

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

ca-app-pub-3940256099942544/2247696110

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

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

המודעות בטעינה

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

בניית AdLoader

הקוד הבא מדגים איך לבנות AdLoader שיכול לטעון מודעות מותאמות:

Java

AdLoader adLoader = new AdLoader.Builder(context, "ca-app-pub-3940256099942544/2247696110")
    .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, "ca-app-pub-3940256099942544/2247696110")
    .forNativeAd { ad : NativeAd ->
        // Show the ad.
    }
    .withAdListener(object : AdListener() {
        override fun onAdFailedToLoad(adError: LoadAdError) {
            // Handle the failure by logging, altering the UI, and so on.
        }
    })
    .withNativeAdOptions(NativeAdOptions.Builder()
            // Methods in the NativeAdOptions.Builder class can be
            // used here to specify individual options settings.
            .build())
    .build()

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

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

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

Java

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

Kotlin

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

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

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

loadAd()

שיטה זו שולחת בקשה למודעה יחידה.

Java

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

Kotlin

adLoader.loadAd(AdRequest.Builder().build())

loadAds()

השיטה הזו שולחת בקשה למספר מודעות (עד חמש):

Java

adLoader.loadAds(new AdRequest.Builder().build(), 3);

Kotlin

adLoader.loadAds(AdRequest.Builder().build(), 3)

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

טעינת מודעות מרובות (אופציונלי)

השיטה loadAds() מקבלת פרמטר נוסף: מספר המודעות שה-SDK צריך לנסות לטעון בבקשה. המספר הזה מוגבל לחמש, ולא בטוח שה-SDK יחזיר את המספר המדויק של המודעות שביקשת.

מודעות Google שמוחזרות יהיו שונות זו מזו, אבל מודעות ממלאי שמור או מקונים של צד שלישי לא יהיו ייחודיות.

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

התקשרות חזרה

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

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

הנה דוגמה לבדיקת isLoading() בקריאה החוזרת (callback) של onNativeAdLoaded():

Java

final AdLoader adLoader = new AdLoader.Builder(this, "ca-app-pub-3940256099942544/2247696110")
        .forNativeAd(new NativeAd.OnNativeAdLoadedListener() {
    @Override
    public void onNativeAdLoaded(NativeAd nativeAd) {
        ...
        // some code that displays the ad.
        ...
        if (adLoader.isLoading()) {
            // The AdLoader is still loading ads.
            // Expect more adLoaded or onAdFailedToLoad callbacks.
        } else {
            // The AdLoader has finished loading ads.
        }
    }
}).build();
adLoader.loadAds(new AdRequest.Builder().build(), 3);

Kotlin

lateinit var adLoader: AdLoader
...
adLoader = AdLoader.Builder(this, "ca-app-pub-3940256099942544/2247696110")
    .forNativeAd {
        ...
        // some code that displays the ad.
        ...
        if (adLoader.isLoading) {
            // The AdLoader is still loading ads.
            // Expect more adLoaded or onAdFailedToLoad callbacks.
        } else {
            // The AdLoader has finished loading ads.
        }
    }.build()
adLoader.loadAds(AdRequest.Builder().build(), 3)

שחרור משאבים

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

צריך לוודא שכל קובצי העזר של NativeAd הוסרו סופית בשיטת onDestroy() של הפעילות.

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

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

Java

final AdLoader adLoader = new AdLoader.Builder(this, "ca-app-pub-3940256099942544/2247696110")
        .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, "ca-app-pub-3940256099942544/2247696110")
    .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() או ל-loadAds() ב-AdLoader עד שטעינת הבקשה הראשונה תסתיים.

האצת חומרה למודעות וידאו

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

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

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

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

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

הצגה של המודעה שלך

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