Zakotwiczone banery adaptacyjne

Banery adaptacyjne to następna generacja reklam elastycznych, która maksymalizuje skuteczność przez optymalizację rozmiaru reklamy dla każdego urządzenia. Są lepsze od banerów inteligentnych, które obsługiwały tylko stałe wysokości, i pozwalają określić szerokość reklamy i wykorzystać ją do określenia optymalnego rozmiaru reklamy.

Aby wybrać najlepszy rozmiar reklamy, banery adaptacyjne używają stałych współczynników proporcji zamiast stałej wysokości. Dzięki temu banery reklamowe zajmują bardziej spójną część ekranu na różnych urządzeniach, co umożliwia zwiększenie skuteczności.

Podczas pracy z banerami adaptacyjnymi pamiętaj, że zawsze zwracają one stały rozmiar dla danego urządzenia i danej szerokości. Po przetestowaniu układu na danym urządzeniu możesz mieć pewność, że rozmiar reklamy się nie zmieni. Jednak rozmiar banera może się zmieniać w zależności od urządzenia. Dlatego zalecamy, aby układ uwzględniał różnice w wysokości reklamy. W rzadkich przypadkach pełny rozmiar adaptacyjny może nie być wypełniony i kreacja o standardowym rozmiarze będzie zamiast tego wyśrodkowana w tym boksie.

Wymagania wstępne

Kiedy używać banerów adaptacyjnych

Banery adaptacyjne zostały zaprojektowane z myślą o zastępowaniu banerów standardowych standardowych o rozmiarze 320 x 50 oraz banerów inteligentnych.

Te rozmiary banerów są zwykle używane jako zakotwiczone banery, które są zwykle zablokowane u góry lub u dołu ekranu.

W przypadku takich zakotwiczonych banerów współczynnik proporcji będzie podobny do standardowych reklam w rozmiarze 320 x 50, co widać w trzech przykładach poniżej:


Baner 320 x 50

Baner adaptacyjny

Baner inteligentny

Baner adaptacyjny w większym stopniu wykorzystuje dostępny rozmiar ekranu. Poza tym w porównaniu z banerami inteligentnymi baner adaptacyjny jest lepszym wyborem, ponieważ:

  • Wykorzystuje ona dowolną podaną szerokość i nie wymusza jej wyświetlania na pełnym ekranie, dzięki czemu uwzględnia bezpieczny obszar w iOS i wycięcia w Androidzie.

  • Wybiera optymalną wysokość dla danego urządzenia, zamiast stosować stałą wysokość dla urządzeń o różnych rozmiarach, co eliminuje skutki fragmentacji urządzenia.

Uwagi dotyczące implementacji

Implementując banery adaptacyjne w swojej aplikacji, pamiętaj o tych kwestiach:

  • Musisz znać szerokość widoku, w którym ma zostać umieszczona reklama, oraz wziąć pod uwagę szerokość urządzenia oraz wszelkie odpowiednie bezpieczne obszary i wycięcia.
  • Upewnij się, że tło widoku reklamy jest nieprzezroczyste, aby zachować zgodność z zasadami AdMob, jeśli mniejsze rozmiary reklam nie wypełniają boksu reklamowego.
  • Upewnij się, że używasz najnowszej wersji wtyczki dla Unity do reklam mobilnych Google. Do zapośredniczenia użyj najnowszej wersji każdego adaptera zapośredniczenia.
  • Rozmiary banerów adaptacyjnych zostały zaprojektowane tak, aby działały najlepiej przy pełnej dostępnej szerokości. W większości przypadków będzie to pełna szerokość ekranu używanego urządzenia. Pamiętaj, aby wziąć pod uwagę odpowiednie bezpieczne obszary.
  • Jeśli korzystasz z interfejsów API AdSize, pakiet SDK do reklam mobilnych Google dopasuje baner do wysokości reklamy dostosowanej do danej szerokości.
  • Istnieją 3 metody uzyskiwania rozmiaru reklamy adaptacyjnej: AdSize.GetLandscapeAnchoredAdaptiveBannerAdSizeWithWidth w przypadku orientacji poziomej, AdSize.GetPortraitAnchoredAdaptiveBannerAdSizeWithWidth pionowej i AdSize.GetCurrentOrientationAnchoredAdaptiveBannerAdSizeWithWidth w przypadku bieżącej orientacji w momencie wykonywania.
  • Rozmiar zwracany dla danej szerokości na danym urządzeniu jest zawsze taki sam, dlatego po przetestowaniu układu na danym urządzeniu możesz mieć pewność, że rozmiar reklamy się nie zmieni.
  • Wysokość zakotwiczonego banera nigdy nie może przekraczać mniej niż 15% wysokości urządzenia lub 90 niezależnych pikseli. Wysokość zakotwiczonego banera nigdy nie może być mniejsza niż 50 niezależnych pikseli.
  • W przypadku banerów o pełnej szerokości możesz użyć flagi AdSize.FullWidth zamiast podawania konkretnej szerokości.

Krótkie wprowadzenie

Aby wdrożyć prosty zakotwiczony baner adaptacyjny, wykonaj podane niżej czynności.

  1. Uzyskaj rozmiar banera adaptacyjnego Wyświetlony rozmiar będzie używany do wysłania żądania banera adaptacyjnego. Aby móc korzystać z rozmiaru reklamy adaptacyjnej, musisz:
    1. Określ szerokość urządzenia w pikselach niezależnych od gęstości lub ustaw własną szerokość, jeśli nie chcesz korzystać z pełnej szerokości ekranu. Interfejsy API Unity, takie jak Screen.width, zwracają piksele bezwzględne, więc musisz podzielić dane według skali urządzenia (można je pobrać z MobileAds.Utils.GetDeviceScale()).
    2. W przypadku banerów o pełnej szerokości użyj flagi AdSize.FullWidth.
    3. W klasie rozmiaru reklamy użyj odpowiednich metod statycznych, np. AdSize.getCurrentOrientationAnchoredAdaptiveBannerAdSizeWithWidth(width), aby uzyskać adaptacyjny obiekt AdSize odpowiadający bieżącej orientacji.
  2. Utwórz obiekt BannerView z identyfikatorem jednostki reklamowej, rozmiarem adaptacyjnym i odpowiednim położeniem reklamy.
  3. Utwórz obiekt żądania reklamy i wczytaj baner za pomocą metody LoadAd() w gotowym widoku reklamy, tak jak w przypadku zwykłego żądania banera.

Przykładowy kod

Oto przykładowy skrypt, który wczytuje i wczytuje baner adaptacyjny tak, aby pasował do szerokości ekranu, z uwzględnieniem bezpiecznego obszaru:

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
}

W tym przypadku funkcja AdSize.GetCurrentOrientationAnchoredAdaptiveBannerAdSizeWithWidth służy do określenia rozmiaru banera w pozycji zakotwiczonej w bieżącej orientacji interfejsu. Aby wstępnie wczytać zakotwiczony baner w danej orientacji, użyj odpowiedniej funkcji z funkcji AdSize.GetPortraitAnchoredAdaptiveBannerAdSizeWithWidth i AdSize.GetLandscapeAnchoredAdaptiveBannerAdSizeWithWidth.