מודעות מותאמות הן נכסי מודעות שמוצגים למשתמשים באמצעות רכיבי ממשק משתמש שמותאמים לפלטפורמה. הן מוצגות באמצעות אותם סוגים של תצוגות שבהם אתם כבר משתמשים כדי ליצור את הפריסות, ואפשר לעצב אותן כך שיתאימו לעיצוב החזותי של האפליקציה.
כשמודעה מותאמת נטענת, האפליקציה מקבלת אובייקט של מודעה שמכיל את נכסי המודעה. לאחר מכן, האפליקציה – ולא Google Mobile Ads SDK – אחראית להצגת הנכסים.
באופן כללי, יש שני חלקים להטמעה מוצלחת של מודעות מותאמות: טעינת מודעה באמצעות ה-SDK ואז הצגת תוכן המודעה באפליקציה.
בדף הזה מוסבר איך להשתמש ב-SDK כדי לטעון מודעות מותאמות. טיפ: מידע נוסף על מודעות מותאמות זמין במדריך שלנו למודעות מותאמות.
אפשר גם לעיין בכמה סיפורי הצלחה של לקוחות: מקרה לדוגמה 1, מקרה לדוגמה 2.
דרישות מוקדמות
- כדאי לעיין במדריך לתחילת העבודה.
תמיד כדאי לבצע בדיקות באמצעות מודעות בדיקה
כשמפתחים ובודקים אפליקציות, חשוב להשתמש במודעות בדיקה ולא במודעות פעילות שמוצגות למשתמשים.
הדרך הכי קלה לטעון מודעות בדיקה היא להשתמש במזהה יחידת המודעות הייעודי לבדיקה של מודעות מותאמות ב-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.
}
})
.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
כפרמטר היחיד שלה, שמקבל קריאות חוזרות (callback) מ-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 Ads יהיו שונות זו מזו, אבל אין ערובה לכך שמודעות ממלאי שטחי פרסום מוזמן או מקונים חיצוניים יהיו ייחודיות.
אם אתם משתמשים בתהליך בחירת הרשת, אל תשתמשו בשיטה loadAds()
, כי בקשות להצגת כמה מודעות מותאמות לא פועלות כרגע במזהים של יחידות מודעות שהוגדרו לתהליך בחירת הרשת.
התקשרות חזרה
אחרי קריאה ל-loadAd()
, מתבצעת קריאה חוזרת אחת לשיטות של מאזין שהוגדרו קודם כדי להעביר את אובייקט המודעה המותאמת או לדווח על שגיאה.
אחרי קריאה ל-loadAds()
, מתבצעות כמה קריאות חוזרות כאלה (לפחות אחת, ולא יותר ממספר המודעות שהתבקשו). אפליקציות שמבקשות כמה מודעות צריכות להפעיל את הפונקציה AdLoader.isLoading()
בהטמעות של קריאות חוזרות כדי לקבוע אם תהליך הטעינה הסתיים.
דוגמה לאופן הבדיקה של isLoading()
בפונקציית הקריאה החוזרת 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()
של הפעילות.
בonNativeAdLoaded
callback, חשוב להקפיד להשמיד מודעות מותאמות קיימות שיוסרו מההפניה.
בדיקה חשובה נוספת היא אם הפעילות נהרסת. אם כן, צריך להפעיל את 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>
מידע נוסף על אפשרויות השליטה בהאצת חומרה זמין במדריך להאצת חומרה. הערה: אי אפשר להפעיל שיפור מהירות באמצעות חומרה לצפיות נפרדות במודעות אם הפעילות מושבתת, ולכן צריך להפעיל שיפור מהירות באמצעות חומרה בפעילות עצמה.
הצגת המודעה
אחרי שטענתם מודעה, כל מה שנותר הוא להציג אותה למשתמשים. כאן מוסבר איך עושים את זה.