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

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

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

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

Предварительные условия

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

Адаптивные баннеры предназначены для полной замены как стандартного размера баннера 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 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 .