מודעות באנר מותאמות הן הדור הבא של מודעות רספונסיביות. הן עוברות אופטימיזציה של גודל המודעה לכל מכשיר, כדי למקסם את הביצועים. בניגוד למודעות באנר חכמות, שתומכות רק בגבהים קבועים, במודעות באנר מותאמות אפשר לציין את רוחב המודעה ולהשתמש בו כדי לקבוע את גודל המודעה האופטימלי.
כדי לבחור את גודל המודעה המתאים ביותר, המערכת משתמשת ביחסי גובה-רוחב קבועים במקום בגבהים קבועים. התוצאה היא עקביות בשטח שמודעות הבאנר תופסות במסך בכל המכשירים, מה שמספק הזדמנויות לשיפור הביצועים.
כשעובדים עם מודעות באנר מותאמות, שימו לב שהן תמיד יחזירו גודל קבוע לפי מכשיר ורוחב נתונים. אחרי שבודקים את הפריסה במכשיר מסוים, אפשר להיות בטוחים שגודל המודעה לא ישתנה. עם זאת, הגודל של נכס הקריאייטיב של הבאנר עשוי להשתנות במכשירים שונים. לכן, מומלץ שהפריסה תתאים לשינויים בגובה המודעה. במקרים נדירים, יכול להיות שהגודל המלא של המודעות המותאמות לא יאוכלס, ובמקום זאת יוצג קריאייטיב בגודל רגיל במרכז המשבצת.
דרישות מוקדמות
- פועלים לפי ההוראות שמפורטות במדריך לתחילת העבודה כדי לייבא את הפלאגין של Mobile Ads ל-Unity ולכלול את Mobile Ads SDK.
מתי כדאי להשתמש במודעות באנר מותאמות
מודעות באנר מותאמות מחליפות את הפורמט המקובל גם את מודעות באנר בגודל 320x50 וגם את הפורמט של מודעות הבאנר החכמות.
בדרך כלל משתמשים בגדלים האלה של מודעות באנר כמודעות באנר מעוגנות, שבדרך כלל מקובעות לחלק העליון או התחתון של המסך.
במקרה של מודעות באנר מעוגנות כאלה, יחס הגובה-רוחב כשמשתמשים במודעות באנר מותאמות יהיה דומה ליחס הגובה-רוחב של מודעות רגילות בגודל 320x50, כפי שאפשר לראות בשלוש הדוגמאות הבאות:
מודעת באנר בגודל 320x50 |
מודעת באנר מותאמת |
מודעת באנר חכמה |
מודעת הבאנר המותאמת מנצלת טוב יותר את גודל המסך הזמין. בנוסף, בהשוואה למודעות באנר חכמות, מודעות באנר מותאמות הן בחירה טובה יותר כי:
המערכת משתמשת בכל רוחב שצוין, במקום לאלץ את הרוחב להיות מסך מלא, וכך מאפשרת לכם להביא בחשבון את האזור הבטוח ב-iOS ולהציג פריימים חתוכים ב-Android.
המערכת בוחרת גובה אופטימלי למכשיר הספציפי, במקום גובה קבוע במכשירים בגדלים שונים, וכך מצמצמת את ההשפעות של הפיצול למכשירים שונים.
הערות להטמעה
כשאתם מטמיעים מודעות באנר מותאמות לאפליקציה, חשוב לזכור את הנקודות הבאות:
- עליכם לדעת מהו רוחב התצוגה שבה המודעה תוצג, תוך התחשבות ברוחב המכשיר ובאזורים בטוחים או בקטעים חתוכים רלוונטיים.
- ודאו שהרקע של הצפייה במודעה אטום כדי לעמוד בדרישות המדיניות של AdMob, במקרים שבהם מוצגות מודעות בגדלים קטנים יותר שלא ממלאות את מיקום המודעה.
- מוודאים שאתם משתמשים בגרסה העדכנית ביותר של הפלאגין של Google Mobile Ads ל-Unity. לצורך תהליך בחירת הרשת (Mediation), צריך להשתמש בגרסה העדכנית ביותר של כל מתאם בחירת הרשת.
- הגדלים של מודעות הבאנר המותאמות מתוכננים כך שפועלים בצורה הכי טובה כשמשתמשים ברוחב המלא שזמין. ברוב המקרים, מדובר ברוחב המלא של המסך במכשיר שנמצא בשימוש. חשוב להביא בחשבון את האזורים הבטוחים הרלוונטיים.
- כשמשתמשים בממשקי ה-API של AdSize עם התאמה אישית, ערכת Google Mobile Ads SDK תגדיר את הגודל של הבאנר כך שהגובה של המודעה יהיה מותאם לרוחב הנתון.
- יש שלוש שיטות לקבלת גודל מודעה מותאם:
AdSize.GetLandscapeAnchoredAdaptiveBannerAdSizeWithWidth
לרוחב,AdSize.GetPortraitAnchoredAdaptiveBannerAdSizeWithWidth
לאורכן ו-AdSize.GetCurrentOrientationAnchoredAdaptiveBannerAdSizeWithWidth
לכיוון הנוכחי בזמן הביצוע. - הגודל המוחזר לרוחב נתון במכשיר מסוים יהיה תמיד זהה, ולכן אחרי שבודקים את הפריסה במכשיר מסוים, תוכלו להיות בטוחים שגודל המודעה לא ישתנה.
- גובה מודעות באנר מוצמדות לא יכול להיות גדול מ-15% מגובה המכשיר או מ-90 פיקסלים ללא תלות בצפיפות, ולא קטן מ-50 פיקסלים ללא תלות בצפיפות.
- במודעות באנר ברוחב מלא, אפשר להשתמש בדגל
AdSize.FullWidth
במקום לציין רוחב ספציפי.
מדריך למתחילים
כדי להטמיע באנר עוגן פשוט ומתאים, פועלים לפי השלבים הבאים.
- מקבלים גודל של מודעת באנר מותאמת. המערכת תשתמש בגודל הזה כדי לבקש את מודעת הבאנר המותאמת. כדי לקבל את גודל המודעה המותאם, חשוב לוודא:
- מקבלים את רוחב המכשיר שבשימוש בפיקסלים שלא תלויים בדחיסות (dp), או מגדירים רוחב משלכם אם לא רוצים להשתמש ברוחב המלא של המסך.
מאחר ש-API של Unity כמו
Screen.width
מחזירים פיקסלים מוחלטים, צריך לחלק לפי קנה המידה של המכשיר (שאפשר לאחזר מ-MobileAds.Utils.GetDeviceScale()
). - משתמשים בדגל
AdSize.FullWidth
למודעות באנר ברוחב מלא. - צריך להשתמש בשיטות הסטטיות המתאימות במחלקה של גודל המודעה, כמו
AdSize.getCurrentOrientationAnchoredAdaptiveBannerAdSizeWithWidth(width)
כדי לקבל אובייקטAdSize
דינמי לכיוון הנוכחי.
- מקבלים את רוחב המכשיר שבשימוש בפיקסלים שלא תלויים בדחיסות (dp), או מגדירים רוחב משלכם אם לא רוצים להשתמש ברוחב המלא של המסך.
מאחר ש-API של Unity כמו
- יוצרים אובייקט
BannerView
עם מזהה יחידת המודעות, הגודל המותאם אישית והמיקום הרלוונטי של המודעה. - יוצרים אובייקט של בקשה להצגת מודעה וטוענים את מודעת הבאנר באמצעות השיטה
LoadAd()
בתצוגת המודעה שהוגדרה מראש, בדיוק כמו שעושים עם בקשה רגילה להצגת מודעת באנר.
קוד לדוגמה
הנה סקריפט לדוגמה לטעינת מודעת באנר אדפטיבית ולטעינה מחדש שלה בהתאם לרוחב המסך, תוך התחשבות באזור הבטוח:
using UnityEngine;
using System;
using GoogleMobileAds.Api;
public class AdaptiveBannerSample : MonoBehaviour
{
private BannerView _bannerView;
// Use this for initialization
void Start()
{
// Set your test devices.
// https://developers.google.com/admob/unity/test-ads
RequestConfiguration requestConfiguration = new RequestConfiguration
{
TestDeviceIds = new List<string>
{
AdRequest.TestDeviceSimulator,
// Add your test device IDs (replace with your own device IDs).
#if UNITY_IPHONE
"96e23e80653bb28980d3f40beb58915c"
#elif UNITY_ANDROID
"75EF8D155528C04DACBBA6F36F433035"
#endif
}
};
MobileAds.SetRequestConfiguration(requestConfiguration);
// Initialize the Google Mobile Ads SDK.
MobileAds.Initialize((InitializationStatus status) =>
{
RequestBanner();
});
}
public void OnGUI()
{
GUI.skin.label.fontSize = 60;
Rect textOutputRect = new Rect(
0.15f * Screen.width,
0.25f * Screen.height,
0.7f * Screen.width,
0.3f * Screen.height);
GUI.Label(textOutputRect, "Adaptive Banner Example");
}
private void RequestBanner()
{
// These ad units are configured to always serve test ads.
#if UNITY_EDITOR
string adUnitId = "unused";
#elif UNITY_ANDROID
string adUnitId = "ca-app-pub-3212738706492790/6113697308";
#elif UNITY_IPHONE
string adUnitId = "ca-app-pub-3212738706492790/5381898163";
#else
string adUnitId = "unexpected_platform";
#endif
// Clean up banner ad before creating a new one.
if (_bannerView != null)
{
_bannerView.Destroy();
}
AdSize adaptiveSize =
AdSize.GetCurrentOrientationAnchoredAdaptiveBannerAdSizeWithWidth(AdSize.FullWidth);
_bannerView = new BannerView(adUnitId, adaptiveSize, AdPosition.Bottom);
// Register for ad events.
_bannerView.OnBannerAdLoaded += OnBannerAdLoaded;
_bannerView.OnBannerAdLoadFailed += OnBannerAdLoadFailed;
AdRequest adRequest = new AdRequest();
// Load a banner ad.
_bannerView.LoadAd(adRequest);
}
#region Banner callback handlers
private void OnBannerAdLoaded(object sender, EventArgs args)
{
Debug.Log("Banner view loaded an ad with response : "
+ _bannerView.GetResponseInfo());
Debug.Log("Ad Height: {0}, width: {1}",
_bannerView.GetHeightInPixels(),
_bannerView.GetWidthInPixels());
}
private void OnBannerAdLoadFailed(LoadAdError error)
{
Debug.LogError("Banner view failed to load an ad with error : "
+ error);
}
#endregion
}
כאן נעשה שימוש בפונקציה AdSize.GetCurrentOrientationAnchoredAdaptiveBannerAdSizeWithWidth
כדי לקבל את הגודל של באנר במיקום מוצמדות בהתאם לכיוון הנוכחי של הממשק. כדי לטעון מראש באנר מוצמדות בכיוון נתון, משתמשים בפונקציה הרלוונטית מ-AdSize.GetPortraitAnchoredAdaptiveBannerAdSizeWithWidth
ומ-AdSize.GetLandscapeAnchoredAdaptiveBannerAdSizeWithWidth
.