Закрепленные адаптивные баннеры

Адаптивные баннеры — это новое поколение адаптивной рекламы, обеспечивающее максимальную эффективность за счёт оптимизации размера рекламы для каждого устройства. Адаптивные баннеры являются усовершенствованием смарт-баннеров, которые поддерживали только фиксированную высоту, и позволяют указать ширину объявления и использовать её для определения оптимального размера.

Чтобы выбрать оптимальный размер рекламы, адаптивные баннеры используют фиксированные пропорции вместо фиксированной высоты. Это позволяет баннерам занимать более равномерную часть экрана на всех устройствах и повышает производительность.

При работе с адаптивными баннерами обратите внимание, что они всегда возвращают постоянный размер для заданного устройства и ширины. Протестировав макет на конкретном устройстве, вы можете быть уверены, что размер объявления не изменится. Однако размер баннера может меняться на разных устройствах. Поэтому мы рекомендуем учитывать в макете разницу в высоте объявления. В редких случаях адаптивный баннер может быть не заполнен полностью, и вместо этого креатив стандартного размера будет центрирован в этом слоте.

Предпосылки

Когда использовать адаптивные баннеры

Адаптивные баннеры предназначены для замены как стандартного размера баннера 320x50, так и формата смарт-баннера, который они заменяют.

Баннеры таких размеров обычно используются в качестве закрепленных баннеров, которые обычно крепятся к верхней или нижней части экрана.

Для таких закрепленных баннеров соотношение сторон при использовании адаптивных баннеров будет аналогично соотношению сторон стандартной рекламы размером 320x50, как можно увидеть в трех примерах ниже:


баннер 320x50

Адаптивный баннер

Смарт-баннер

Адаптивный баннер эффективнее использует доступный размер экрана. Кроме того, по сравнению со смарт-баннером, адаптивный баннер является лучшим выбором, поскольку:

  • Он использует любую указанную вами ширину, а не принудительно устанавливает ширину на весь экран, что позволяет учитывать безопасную область на iOS и отображать вырезанные элементы на Android.

  • Он выбирает оптимальную высоту для конкретного устройства, а не поддерживает постоянную высоту для устройств разного размера, что смягчает эффект фрагментации устройств.

Заметки о реализации

При реализации адаптивных баннеров в вашем приложении учитывайте следующие моменты:

  • Вам необходимо знать ширину области просмотра, в которой будет размещена реклама, а также учитывать ширину устройства и любые безопасные зоны или вырезы, которые применимы .
  • Убедитесь, что фон вашего рекламного объявления непрозрачен, чтобы соответствовать политикам AdMob при показе объявлений меньшего размера, которые не заполняют рекламное место.
  • Убедитесь, что вы используете последнюю версию плагина Google Mobile Ads Unity. Для медиации используйте последнюю версию каждого адаптера медиации.
  • Адаптивные размеры баннеров рассчитаны на максимальную ширину. В большинстве случаев это будет полная ширина экрана используемого устройства. Обязательно учитывайте безопасные зоны.
  • Google Mobile Ads SDK оптимизирует размер баннера с учетом высоты объявления для заданной ширины при использовании адаптивных API AdSize.
  • Существует три метода получения размера объявления для адаптивного размещения: AdSize.GetLandscapeAnchoredAdaptiveBannerAdSizeWithWidth для альбомной ориентации, AdSize.GetPortraitAnchoredAdaptiveBannerAdSizeWithWidth для портретной ориентации и AdSize.GetCurrentOrientationAnchoredAdaptiveBannerAdSizeWithWidth для текущей ориентации на момент выполнения.
  • Размер, возвращаемый для заданной ширины на заданном устройстве, всегда будет одинаковым, поэтому, протестировав макет на определенном устройстве, вы можете быть уверены, что размер объявления не изменится.
  • Высота закрепленного баннера никогда не должна превышать 15% высоты устройства или 90 пикселей, независимых от плотности, и никогда не должна быть меньше 50 пикселей, независимых от плотности.
  • Для полноэкранных баннеров можно использовать флаг AdSize.FullWidth вместо указания конкретной ширины.

Быстрый старт

Чтобы реализовать простой адаптивный якорный баннер, выполните следующие действия.

  1. Получите размер адаптивного баннера. Полученный размер будет использован для запроса вашего адаптивного баннера. Чтобы получить размер адаптивного баннера, убедитесь, что вы:
    1. Получите ширину используемого устройства в пикселях, не зависящих от плотности, или задайте собственную ширину, если вы не хотите использовать всю ширину экрана. Поскольку 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/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 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 .