Zakotwiczone banery adaptacyjne

Banery adaptacyjne to nowa generacja reklam elastycznych, które maksymalizują skuteczność dzięki optymalizacji rozmiaru reklamy pod kątem każdego urządzenia. W przypadku banerów inteligentnych, które obsługiwały tylko stałe wysokości, można teraz określić szerokość reklamy i na tej podstawie określić jej optymalny rozmiar.

Aby wybrać najlepszy rozmiar reklamy, banery adaptacyjne korzystają ze 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 i pozwalają poprawić skuteczność.

Korzystając z banerów adaptacyjnych, pamiętaj, że zawsze zwracają 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 kreacji banerowej może się zmieniać w zależności od urządzenia. Dlatego zalecamy, aby układ uwzględniał różnice w wysokości reklam. W rzadkich przypadkach pełny rozmiar adaptacyjny może nie zostać wypełniony i zamiast niego zostanie wyśrodkowana kreacja o standardowym rozmiarze.

Wymagania wstępne

Kiedy używać banerów adaptacyjnych

Banery adaptacyjne zostały zaprojektowane jako zamiennik zarówno standardowego rozmiaru banera 320 x 50, jak i formatu inteligentnego, który je zastępują.

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

W przypadku takich zakotwiczonych banerów format obrazu podczas korzystania z banerów adaptacyjnych będzie podobny do formatu standardowej reklamy 320 x 50, jak widać w 3 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 baner adaptacyjny jest lepszym wyborem niż baner inteligentny, ponieważ:

  • Wykorzystuje dowolną podaną przez Ciebie szerokość, zamiast wymuszać korzystanie z pełnego ekranu. Pozwala to uwzględnić bezpieczny obszar na urządzeniach z iOS, a w Androidzie – wycięcia w ekranie.

  • Dobiera optymalną wysokość dla danego urządzenia i nie ma stałej wysokości na urządzeniach o różnych rozmiarach. Ma to na celu łagodzenie skutków fragmentacji danych na urządzeniach.

Uwagi o implementacji

Wdrażając banery adaptacyjne w swojej aplikacji, pamiętaj o tych kwestiach:

  • Musisz określić szerokość miejsca, w którym znajdzie się reklama, przy czym należy uwzględnić szerokość urządzenia oraz wszelkie bezpieczne obszary i wycięcia, które mają zastosowanie.
  • Zadbaj o nieprzezroczyste tło widoku reklamy, aby zapewnić zgodność z zasadami AdMob w przypadku mniejszych reklam, które nie wypełniają boksu reklamowego.
  • Upewnij się, że używasz najnowszej wersji wtyczki do reklam mobilnych Google dla Unity. Do zapośredniczenia używaj najnowszej wersji każdego adaptera zapośredniczenia.
  • Rozmiary banerów adaptacyjnych najlepiej sprawdzają się 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 adaptacyjnych interfejsów AdSize, pakiet SDK do reklam mobilnych Google dopasuje rozmiar banera do wysokości reklamy zoptymalizowanej pod kątem danej szerokości.
  • Są 3 metody określenia rozmiaru reklamy adaptacyjnej: AdSize.GetLandscapeAnchoredAdaptiveBannerAdSizeWithWidth w przypadku orientacji poziomej, AdSize.GetPortraitAnchoredAdaptiveBannerAdSizeWithWidth w orientacji pionowej i AdSize.GetCurrentOrientationAnchoredAdaptiveBannerAdSizeWithWidth dla bieżącej orientacji w momencie wykonywania.
  • Rozmiar zwrócony dla danej szerokości na danym urządzeniu będzie zawsze taki sam, więc po przetestowaniu układu na danym urządzeniu możesz mieć pewność, że rozmiar reklamy się nie zmieni.
  • Wysokość zakotwiczonego banera nigdy nie jest większa niż mniejsza niż 15% wysokości urządzenia lub 90 pikseli niezależnych od gęstości i nigdy nie jest mniejsza niż 50 pikseli niezależnych od gęstości.
  • W przypadku banerów o pełnej szerokości możesz użyć flagi AdSize.FullWidth, zamiast podać konkretną szerokość.

Krótkie wprowadzenie

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

  1. Wybierz rozmiar banera adaptacyjnego. Pobrany rozmiar zostanie użyty do przesłania żądania banera adaptacyjnego. Aby uzyskać rozmiar reklamy adaptacyjnej, musisz:
    1. Pobierz szerokość używanego 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 trzeba je podzielić według skali urządzenia (do pobrania z MobileAds.Utils.GetDeviceScale()).
    2. W przypadku banerów o pełnej szerokości użyj flagi AdSize.FullWidth.
    3. Użyj odpowiednich metod statycznych w klasie rozmiaru reklamy, np. AdSize.getCurrentOrientationAnchoredAdaptiveBannerAdSizeWithWidth(width), aby uzyskać adaptacyjny obiekt AdSize na potrzeby 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 przygotowanym widoku reklamy, tak jak w przypadku zwykłego żądania banera.

Przykładowy kod

Oto przykładowy skrypt, który wczytuje i ponownie wczytuje baner adaptacyjny, aby dopasowywał się do szerokości ekranu, biorąc pod uwagę bezpieczny obszar:

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
}

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 określonej orientacji, użyj odpowiedniej funkcji z elementów AdSize.GetPortraitAnchoredAdaptiveBannerAdSizeWithWidth i AdSize.GetLandscapeAnchoredAdaptiveBannerAdSizeWithWidth.