במדריך הזה מוסבר איך לטעון מודעת באנר מותאמת ומעוגנת באפליקציית Android.
דרישות מוקדמות
- הגדרה של Google Mobile Ads SDK (Legacy)
- אופציונלי: כדי לראות דוגמה להטמעה של מודעות באנר, בוחרים באחת מהאפליקציות לדוגמה הבאות:
- דוגמה למודעות באנר מותאמות ומעוגנות ב-Java, ב-Kotlin או ב-Jetpack Compose.
- הדגמה של התכונות המתקדמות ב-Java או ב-Kotlin.
תמיד כדאי לבצע בדיקות באמצעות מודעות בדיקה
כשאתם מפתחים ובודקים את האפליקציות, חשוב להשתמש במודעות בדיקה ולא במודעות פעילות. אם לא תעשו את זה, אנחנו עלולים להשעות את החשבון שלכם.
הדרך הכי קלה לטעון מודעות לבדיקה היא להשתמש במזהה הייעודי של יחידת המודעות לבדיקה עבור מודעות באנר ל-Android:
ca-app-pub-3940256099942544/9214589741
הוא הוגדר במיוחד כדי להחזיר לכל בקשה מודעות בדיקה, ואפשר להשתמש בו באפליקציות שלכם בזמן כתיבת קוד, בדיקה וניפוי באגים. רק חשוב להקפיד להחליף אותו במזהה יחידת המודעות שלכם לפני פרסום האפליקציה.
מידע נוסף על אופן הפעולה של Google Mobile Ads SDK (Legacy) מודעות בדיקה זמין במאמר הפעלת מודעות בדיקה.
הגדרת הצפייה במודעה
פריסת 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 פיתוח נייטיב
כוללים את התיקייה JetpackCompose Utilities . התיקייה הזו כוללת רכיבי עזר ליצירת האובייקט
AdViewוהנכסים.כתיבת
AdView:
// Place the ad view at the bottom of the screen.
Column(modifier = modifier.fillMaxSize(), verticalArrangement = Arrangement.Bottom) {
Box(modifier = modifier.fillMaxWidth()) { BannerAd(adView, modifier) }
}
הגדרת גודל המודעה
מודעות באנר מותאמות גדולות הן פורמט גדול יותר שמיועד לפריסות ללא גלילה. בהשוואה למודעות באנר מותאמות ומעוגנות רגילות, הגובה המקסימלי של מודעות הבאנר האלה יכול להיות גדול יותר – עד 20% מגובה המסך, ובין 50 ל-150dp. המרחב המוגדל הזה מותאם לקטע וידאו.
מגדירים את AdSize לסוג של מודעת באנר מותאמת מעוגנת עם רוחב מוגדר:
Java
// Request a large anchored adaptive banner with a width of 360.
adView.setAdSize(AdSize.getLargeAnchoredAdaptiveBannerAdSize(this, 360));
Kotlin
// Request a large anchored adaptive banner with a width of 360.
adView.setAdSize(AdSize.getLargeAnchoredAdaptiveBannerAdSize(this, 360))
Jetpack פיתוח נייטיב
// Set a large anchored adaptive banner ad size with a given width.
val adSize = AdSize.getLargeAnchoredAdaptiveBannerAdSize(LocalContext.current, 360)
adView.setAdSize(adSize)
הוספת AdView לפריסה
יוצרים AdView באמצעות גודל המודעה כדי להוסיף לפריסה של האפליקציה:
Java
// Create a new ad view.
adView = new AdView(this);
adView.setAdUnitId(AD_UNIT_ID);
// Request a large anchored adaptive banner with a width of 360.
adView.setAdSize(AdSize.getLargeAnchoredAdaptiveBannerAdSize(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 a large anchored adaptive banner with a width of 360.
adView.setAdSize(AdSize.getLargeAnchoredAdaptiveBannerAdSize(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 a large anchored adaptive banner ad size with a given width.
val adSize = AdSize.getLargeAnchoredAdaptiveBannerAdSize(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) }
}
טעינת מודעה
בדוגמה הבאה, מודעת באנר מותאמת ומעוגנת ברוחב 360 נטענת לאובייקט AdView:
Java
AdRequest adRequest = new AdRequest.Builder().build();
adView.loadAd(adRequest);
Kotlin
val adRequest = AdRequest.Builder().build()
adView.loadAd(adRequest)
רענון מודעה
אם הגדרתם את יחידת המודעות לרענון, אתם לא צריכים לבקש מודעה אחרת כשהמודעה לא נטענת. Google Mobile Ads SDK (Legacy) מכבדת כל קצב רענון שציינתם בממשק המשתמש של 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
}
Jetpack פיתוח נייטיב
DisposableEffect(Unit) {
// Destroy the AdView to prevent memory leaks when the screen is disposed.
onDispose { adView.destroy() }
}
אירועים שקשורים למודעות
אפשר להאזין למספר אירועים במחזור החיים של המודעה, כולל טעינה, חשיפה של מודעה וקליק, וגם אירועים של פתיחה וסגירה של מודעה. מומלץ להגדיר את הפונקציה callback לפני טעינת הבאנר.
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 תואמת לאירוע במחזור החיים של מודעה.
| methods שאפשר לשנות | |
|---|---|
onAdClicked() |
ה-method onAdClicked() מופעלת כשמתועד קליק על מודעה.
|
onAdClosed() |
השיטה onAdClosed()
מופעלת כשמשתמש חוזר לאפליקציה אחרי צפייה בכתובת היעד של מודעה. האפליקציה יכולה להשתמש בה כדי להמשיך פעילויות שהושעו או לבצע כל פעולה אחרת שנדרשת כדי להתכונן לאינטראקציה.
דוגמה להטמעה של שיטות AdListener מופיעה ב-AdMob
AdListener example באפליקציית ההדגמה של 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>
מידע נוסף על אפשרויות השליטה בשיפור המהירות באמצעות חומרה זמין במדריך בנושא שיפור המהירות באמצעות חומרה. שימו לב: אי אפשר להפעיל שיפור מהירות באמצעות חומרה לצפיות במודעות ספציפיות אם הפעילות מושבתת, ולכן צריך להפעיל שיפור מהירות באמצעות חומרה לפעילות עצמה.
השלבים הבאים
מודעות באנר שאפשר לכווץ
מודעות באנר שאפשר לכווץ הן מודעות באנר שמוצגות בהתחלה כשכבת-על גדולה יותר, עם כפתור שאפשר ללחוץ עליו כדי לכווץ את המודעה לגודל קטן יותר. כדאי להשתמש בו כדי לשפר עוד יותר את הביצועים. פרטים נוספים זמינים במאמר בנושא מודעות באנר שאפשר לכווץ.
מודעות באנר מותאמות שמוצגות בתוך הטקסט
מודעות באנר מותאמות שמוצגות בתוך הטקסט הן מודעות באנר גדולות וגבוהות יותר בהשוואה למודעות באנר מותאמות ומעוגנות. הגובה שלהם משתנה, והם יכולים להיות בגובה של מסך המכשיר. מומלץ להשתמש במודעות באנר מותאמות שמוצגות בתוך הטקסט באפליקציות שבהן מודעות הבאנר מוצגות בתוכן שניתן לגלילה, ולא במודעות באנר מעוגנות בגודל מותאם. פרטים נוספים מופיעים במאמר בנושא באנרים מותאמים בגוף הטקסט.