מודעות באנר הן מודעות מלבניות שתופסות חלק מהפריסה של האפליקציה. הן נשארות על המסך בזמן שהמשתמשים מבצעים אינטראקציה עם האפליקציה, מעוגנות בחלק העליון או התחתון של המסך או מוטמעות בתוכן בזמן שהמשתמש גולל. ייתכן שיתבצע רענון אוטומטי של מודעות באנר אחרי פרק זמן מסוים. לקבלת מידע נוסף, קראו את המאמר סקירה כללית על מודעות באנר.
במדריך הזה מוסבר איך להתחיל לעבוד עם מודעות באנר מותאמות. המודעות האלה משפרות את הביצועים על ידי אופטימיזציה של גודל המודעה בכל מכשיר לפי רוחב המודעה שציינתם.
מודעות באנר מותאמות מעוגנות הן מודעות עם יחס גובה-רוחב קבוע, ולא מודעות רגילות בגודל קבוע. יחס הגובה-רוחב דומה ליחס 320x50 המקובל בתחום. אחרי שמציינים את הרוחב המלא הזמין, תוצג מודעה עם גובה אופטימלי לרוחב הזה. הגובה האופטימלי לא משתנה בבקשות מאותו מכשיר, והתצוגות מסביב לא צריכות לזוז כשהמודעה מתעדכנת.
דרישות מוקדמות
- מבצעים את ההוראות שמופיעות במדריך לתחילת העבודה.
ביצוע בדיקות תמיד באמצעות מודעות בדיקה
כשיוצרים ובודקים את האפליקציות, חשוב להשתמש במודעות בדיקה ולא במודעות פעילות בסביבת הייצור. אם לא תעשה זאת, ייתכן שהחשבון שלך יושעה.
הדרך הקלה ביותר לטעון מודעות בדיקה היא באמצעות המזהה הייעודי של יחידת המודעות לבדיקה עבור באנרים ל-Android:
/6499/example/adaptive-banner
היא הוגדרה במיוחד להחזרת מודעות בדיקה לכל בקשה, ואתם יכולים להשתמש בה באפליקציות שלכם בזמן תכנות, בדיקה וניפוי באגים. רק הקפידו להחליף אותה במזהה יחידת מודעות משלכם לפני פרסום האפליקציה.
רוצים לדעת איך מודעות הבדיקה ב-Mobile Ads SDK פועלות במאמר מודעות בדיקה?
הוספה של AdManagerAdView לפריסה
השלב הראשון בהצגת באנר הוא להציב את AdManagerAdView
בפריסה של Activity
או Fragment
שבהם רוצים להציג אותו.:
Java
private AdSize getAdSize() {
// Determine the screen width (less decorations) to use for the ad width.
Display display = getWindowManager().getDefaultDisplay();
DisplayMetrics outMetrics = new DisplayMetrics();
display.getMetrics(outMetrics);
float density = outMetrics.density;
float adWidthPixels = adContainerView.getWidth();
// If the ad hasn't been laid out, default to the full screen width.
if (adWidthPixels == 0) {
adWidthPixels = outMetrics.widthPixels;
}
int adWidth = (int) (adWidthPixels / density);
return AdSize.getCurrentOrientationAnchoredAdaptiveBannerAdSize(this, adWidth);
}
private void loadBanner() {
// Create a new ad view.
AdManagerAdView adView = new AdManagerAdView(this);
adView.setAdSizes(getAdSize());
adView.setAdUnitId("/6499/example/adaptive-banner");
// Replace ad container with new ad view.
adContainerView.removeAllViews();
adContainerView.addView(adView);
// Start loading the ad in the background.
AdManagerAdRequest adRequest = new AdManagerAdRequest.Builder().build();
adView.loadAd(adRequest);
}
Kotlin
// Determine the screen width (less decorations) to use for the ad width.
// If the ad hasn't been laid out, default to the full screen width.
private val adSize: AdSize
get() {
val display = windowManager.defaultDisplay
val outMetrics = DisplayMetrics()
display.getMetrics(outMetrics)
val density = outMetrics.density
var adWidthPixels = binding.adViewContainer.width.toFloat()
if (adWidthPixels == 0f) {
adWidthPixels = outMetrics.widthPixels.toFloat()
}
val adWidth = (adWidthPixels / density).toInt()
return AdSize.getCurrentOrientationAnchoredAdaptiveBannerAdSize(this, adWidth)
}
private fun loadBanner() {
// Create a new ad view.
val adView = AdManagerAdView(this)
adView.adSizes = adSize
adView.adUnitId = "/6499/example/adaptive-banner"
// Create an ad request.
val adRequest = AdManagerAdRequest.Builder().build()
// Start loading the ad in the background.
adView.loadAd(adRequest)
}
טעינת מודעה
לאחר יצירת AdManagerAdView , השלב הבא הוא לטעון מודעה. עושים את זה באמצעות השיטה loadAd()
במחלקה AdManagerAdView
. הוא משתמש בפרמטר AdManagerAdRequest
שכולל מידע על זמן הריצה, כמו פרטי הטירגוט, של בקשה אחת להצגת מודעה.
הנה דוגמה שממחישה איך לטעון מודעה בשיטת onCreate()
של Activity
:
Java
private void loadBanner() {
// Create a new ad view.
adView = new AdManagerAdView(this);
adView.setAdUnitId(AD_UNIT);
adView.setAdSize(getAdSize());
// Replace ad container with new ad view.
adContainerView.removeAllViews();
adContainerView.addView(adView);
// Start loading the ad in the background.
AdManagerAdRequest adRequest = new AdManagerAdRequest.Builder().build();
adView.loadAd(adRequest);
}
Kotlin
private fun loadBanner() {
// This is an ad unit ID for a test ad. Replace with your own banner ad unit ID.
adView.adUnitId = "/6499/example/banner"
adView.setAdSize(adSize)
// Create an ad request.
val adRequest = AdManagerAdRequest.Builder().build()
// Start loading the ad in the background.
adView.loadAd(adRequest)
}
אם המודעה לא נטענת, אין צורך לבקש מודעה נוספת באופן מפורש כל עוד הגדרתם את הרענון של יחידת המודעות. Google Mobile Ads SDK פועל בהתאם לקצב הרענון שהגדרתם Ad Managerבממשק האינטרנט. אם לא הפעלתם רענון, תצטרכו לשלוח בקשה חדשה.
זהו! האפליקציה שלכם מוכנה עכשיו להצגת מודעות באנר.
אירועי מודעות
אפשר לזהות כמה אירועים במחזור החיים של המודעה, כולל טעינה, חשיפה וקליק של המודעה ואירועי פתיחה וסגירה של המודעה. מומלץ להגדיר את הקריאה החוזרת לפני טעינת הבאנר.Java
AdManagerAdView.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(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
AdManagerAdView.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
תואמת לאירוע במחזור החיים של מודעה.
שיטות שניתן לשנות | |
---|---|
onAdClicked() |
השיטה onAdClicked()
מופעלת כשמתועד קליק על מודעה.
|
onAdClosed() |
השיטה onAdClosed()
מופעלת כשמשתמש חוזר לאפליקציה אחרי שצפה בכתובת היעד של
המודעה. האפליקציה יכולה להשתמש בה כדי להמשיך פעילויות שהושעו או
לבצע כל פעולה אחרת שנדרשת כדי להתכונן לאינטראקציה.
|
onAdFailedToLoad() |
השיטה onAdFailedToLoad() היא היחידה שכוללת פרמטר. פרמטר השגיאה מסוג LoadAdError מתאר איזו שגיאה התרחשה. מידע נוסף זמין במסמכי התיעוד בנושא ניפוי באגים של שגיאות בטעינת מודעות.
|
onAdImpression() |
השיטה onAdImpression()
מופעלת כשמתועדת חשיפה של מודעה.
|
onAdLoaded() |
השיטה onAdLoaded()
מתבצעת לאחר סיום הטעינה של המודעה. לדוגמה, אם רוצים לעכב את
הוספת הפרמטר AdManagerAdView
לפעילות או למקטע עד שתהיה בטוחים שהמודעה תיטען, אפשר לעשות זאת כאן.
|
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>
למידע נוסף על האפשרויות לשליטה בהאצת חומרה, קראו את המדריך לשיפור המהירות באמצעות חומרה. שימו לב שלא ניתן להפעיל צפיות במודעות בודדות עבור שיפור מהירות באמצעות חומרה, אם הפעילות מושבתת, לכן יש להפעיל את שיפור המהירות באמצעות חומרה בפעילות עצמה.
ספירת חשיפות ידנית
ספירת חשיפות ידנית תואמת רק לקמפיינים במכירה ישירה ולקמפיינים ביתיים, שניהול הטראפיק שלהם מתבצע ישירות ב-Ad Manager. הוא לא אמור לשמש למילוי חוסרים (backfill) או להצגת מודעות ברשתות של צד שלישי. לפרטים נוספים ראו את המאמר ספירת חשיפות וקליקים.
אפשר לשלוח פינגים של חשיפות באופן ידני ל-Ad Manager אם יש לכם תנאים מיוחדים למקרים שבהם צריך לתעד חשיפה. לשם כך, עליכם להפעיל AdManagerAdRequest
לחשיפות ידניות לפני שטוענים מודעה:
Java
AdManagerAdRequest adRequest = new AdManagerAdRequest.Builder()
.setManualImpressionsEnabled(true)
.build();
Kotlin
val adRequest = AdManagerAdRequest.Builder()
.setManualImpressionsEnabled(true)
.build()
אחרי שמוודאים שמודעה הוחזרה בהצלחה והיא מופיעה על המסך, אפשר לתעד חשיפה באופן ידני:
Java
AdManagerAdView.recordManualImpression();
Kotlin
AdManagerAdView.recordManualImpression()
אירועים באפליקציה
אירועים באפליקציה מאפשרים ליצור מודעות שיכולות לשלוח הודעות לקוד האפליקציה שלהן. לאחר מכן האפליקציה תוכל לבצע פעולות על סמך ההודעות האלה.
ניתן להאזין לאירועים ספציפיים של האפליקציה ב-Ad Manager באמצעות AppEventListener
.
האירועים האלה יכולים להתרחש בכל שלב במחזור החיים של המודעה, אפילו לפני שמפעילים את onAdLoaded()
.
Java
public interface AppEventListener {
void onAppEvent(String name, String info);
}
Kotlin
interface AppEventListener {
fun onAppEvent(name: String, info: String)
}
מתבצעת קריאה לפונקציה void onAppEvent(String name, String info)
כשמתרחש אירוע באפליקציה
במודעה. אפשר להטמיע את הממשק הזה באמצעות הפעילות שלכם או כל אובייקט אחר:
Java
import com.google.android.gms.ads.admanager.*;
public class BannerExample extends Activity implements AppEventListener {
}
Kotlin
import com.google.android.gms.ads.admanager.*
class BannerExample : Activity(), AppEventListener {
}
ואז הועבר אל AdManagerAdView
:
Java
AdManagerAdView.setAppEventListener(this);
Kotlin
AdManagerAdView.appEventListener = this
הנה דוגמה שמראה איך לשנות את צבע הרקע של אפליקציה בהתאם לאירוע באפליקציה עם שם צבע:
Java
@Override
public void onAppEvent(String name, String info) {
if ("color".equals(name)) {
if ("green".equals(info)) {
// Set background color to green.
} else if ("blue".equals(info)) {
// Set background color to blue.
} else {
// Set background color to black.
}
}
}
Kotlin
override fun onAppEvent(name: String?, info: String?) {
if (name == "color") {
when (info) {
"green" -> {
// Set background color to green.
}
"blue" -> {
// Set background color to blue.
}
else -> {
// Set background color to black.
}
}
}
}
וזה הקריאייטיב המתאים ששולח ל-listener הודעות על אירועים באפליקציות צבעוניות:
<html>
<head>
<script src="//www.gstatic.com/afma/api/v1/google_mobile_app_ads.js"></script>
<script>
document.addEventListener("DOMContentLoaded", function() {
// Send a color=green event when ad loads.
admob.events.dispatchAppEvent("color", "green");
document.getElementById("ad").addEventListener("click", function() {
// Send a color=blue event when ad is clicked.
admob.events.dispatchAppEvent("color", "blue");
});
});
</script>
<style>
#ad {
width: 320px;
height: 50px;
top: 0px;
left: 0px;
font-size: 24pt;
font-weight: bold;
position: absolute;
background: black;
color: white;
text-align: center;
}
</style>
</head>
<body>
<div id="ad">Carpe diem!</div>
</body>
</html>
ראו דוגמה לאירועים באפליקציה של Ad Manager כדי לראות הטמעה של אירועים באפליקציה באפליקציית ההדגמה של API.
מקורות מידע נוספים
דוגמאות ב-GitHub
השלבים הבאים
מודעות באנר ניתנות לכיווץ
מודעות באנר ניתנות לכיווץ הן מודעות באנר שמוצגות בהתחלה כשכבת-על גדולה יותר, עם לחצן לכיווץ המודעה לגודל קטן יותר. כדאי להשתמש בה כדי לבצע אופטימיזציה נוספת של הביצועים. פרטים נוספים זמינים במאמר מודעות באנר ניתנות לכיווץ.
מודעות באנר מותאמות המשולבות בתוכן הדף
מודעות באנר מותאמות מוטבעות הן מודעות באנר גדולות וגבוהות יותר בהשוואה למודעות באנר מותאמות מעוגנות. הגובה שלהם משתנה, והגובה שלהם יכול להיות זהה לזה של מסך המכשיר. מומלץ להשתמש במודעות באנר מותאמות מוטמעות במקום במודעות באנר מותאמות מעוגנות באפליקציות שמציבות מודעות באנר בתוכן שמאפשר גלילה. לפרטים נוספים, ראו מודעות באנר מותאמות מוטבעות.