מודעות מותאמות הן נכסי פרסום שמוצגים למשתמשים באמצעות רכיבי ממשק משתמש שמותאמים לפלטפורמה. הם מוצגים באמצעות אותם סוגי תצוגות שבהן אתם כבר יוצרים את הפריסות, וניתן לעצב אותם בהתאם לעיצוב החזותי של האפליקציה.
כשמודעה מותאמת נטענת, האפליקציה מקבלת אובייקט מודעה שמכיל את הנכסים שלה, והיא אחראית להצגת הנכסים האלה, ולא 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
.
כשמודעה נטענת בהצלחה, מתבצעת קריאה ל-method 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()
, מתבצעת קריאה חוזרת אחת לשיטות ההאזנה שהוגדרו מראש, כדי לספק את אובייקט המודעה המותאם או לדווח על שגיאה.
אחרי קריאה ל-loadAds()
, מתבצעות כמה קריאות חוזרות כאלה (לפחות אחת, ולא יותר ממספר המודעות המבוקש). אפליקציות שמבקשות להציג כמה מודעות צריכות להפעיל את AdLoader.isLoading()
בהטמעות של קריאות החזרה (callbacks) שלהן כדי לקבוע אם תהליך הטעינה הסתיים.
דוגמה לבדיקה של 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
נהרסות ב-method 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>
מידע נוסף על האפשרויות לשליטה בשיפור המהירות באמצעות חומרה מופיע במדריך לשיפור המהירות באמצעות חומרה. חשוב לזכור: אי אפשר להפעיל שיפור מהירות באמצעות חומרה לצפיות ספציפיות במודעות אם הפעילות מושבתת, לכן צריך להפעיל את שיפור המהירות באמצעות חומרה בפעילות עצמה.
הצגת המודעה
אחרי שתטענו מודעה, כל מה שנותר הוא להציג אותה למשתמשים. במדריך המתקדם שלנו למודעות רגילות מוסבר איך עושים את זה.