מודעות באנר מותאמות עם עוגן

מודעות באנר מותאמות הן הדור הבא של מודעות רספונסיביות, שמאפשרות לשפר את הביצועים על ידי אופטימיזציה של גודל המודעה לכל מכשיר. בניגוד למודעות באנר חכמות, שבהן אפשר היה להגדיר רק גובה קבוע, במודעות באנר מותאמות אפשר לציין את רוחב המודעה ולהשתמש בנתון הזה כדי לקבוע את גודל המודעה האופטימלי.

כדי לבחור את גודל המודעה המתאים ביותר, המערכת משתמשת ביחסי גובה-רוחב קבועים במקום בגבהים קבועים. כך ניתן להבטיח שמודעות הבאנר יוצבו בחלק עקבי יותר של המסך במכשירים השונים, ותהיה לכם אפשרות לשפר את הביצועים.

כשעובדים עם מודעות באנר מותאמות, חשוב לזכור שהן תמיד יחזירו גודל קבוע בתגובה לכל הבקשות למודעות שיצוינו בהן אותו מכשיר ורוחב נתון. אחרי שבודקים את הפריסה במכשיר מסוים, אפשר להיות בטוחים שגודל המודעה לא ישתנה. עם זאת, הגודל של נכס הקריאייטיב של הבאנר עשוי להשתנות במכשירים שונים. לכן, מומלץ שהפריסה תתאים לשינויים בגובה המודעה. במקרים נדירים, יכול להיות שהגודל המלא של המודעות המותאמות לא יאוכלס, ובמקום זאת יוצג קריאייטיב בגודל רגיל במרכז המשבצת.

דרישות מוקדמות

מתי כדאי להשתמש במודעות באנר מותאמות

מודעות באנר מותאמות מיועדות להחליף את מודעות הבאנר בגודל הרגיל שמקובל בתחום (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 במקום לציין רוחב ספציפי.

מדריך למתחילים

כדי להטמיע באנר עוגן פשוט ומתאים, פועלים לפי השלבים הבאים.

  1. מקבלים גודל של מודעת באנר מותאמת. המערכת תשתמש בגודל הזה כדי לבקש את מודעת הבאנר המותאמת. כדי לקבל את גודל המודעה המותאם, צריך לוודא:
    1. מקבלים את רוחב המכשיר שבשימוש בפיקסלים שלא תלויים בדחיסות (dp), או מגדירים רוחב משלכם אם לא רוצים להשתמש ברוחב המסך המלא. מאחר ש-API של Unity כמו Screen.width מחזירים פיקסלים מוחלטים, צריך לחלק לפי קנה המידה של המכשיר (שאפשר לאחזר מ-MobileAds.Utils.GetDeviceScale()).
    2. משתמשים בדגל AdSize.FullWidth לבאנרים ברוחב מלא.
    3. משתמשים בשיטות הסטטיות המתאימות במחלקה של גודל המודעה, כמו AdSize.getCurrentOrientationAnchoredAdaptiveBannerAdSizeWithWidth(width) כדי לקבל אובייקט AdSize אדפטיבי לכיוון הנוכחי.
  2. יוצרים אובייקט BannerView עם מזהה יחידת המודעות, הגודל המותאם אישית והמיקום הרלוונטי של המודעה.
  3. יוצרים אובייקט של בקשה להצגת מודעה ומטעינים את מודעת הבאנר באמצעות השיטה 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/ad-manager/mobile-ads-sdk/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.