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

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

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

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

Предпосылки

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

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

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

Соотношение сторон таких привязанных баннеров при использовании адаптивных баннеров будет таким же, как у стандартного объявления 320 x 50, как видно из трех примеров ниже:


Баннер 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 NewMonoBehaviour : MonoBehaviour
{
    private BannerView bannerView;

    // Use this for initialization
    void Start()
    {
        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 (this.bannerView != null)
        {
            this.bannerView.Destroy();
        }

        AdSize adaptiveSize =
                AdSize.GetCurrentOrientationAnchoredAdaptiveBannerAdSizeWithWidth(AdSize.FullWidth);

        this.bannerView = new BannerView(adUnitId, adaptiveSize, AdPosition.Bottom);

        // Register for ad events.
        this.bannerView.OnAdLoaded += this.HandleAdLoaded;
        this.bannerView.OnAdFailedToLoad += this.HandleAdFailedToLoad;
        this.bannerView.OnAdOpening += this.HandleAdOpening;
        this.bannerView.OnAdClosed += this.HandleAdClosed;

        AdRequest adRequest = new AdRequest.Builder()
            .AddTestDevice(AdRequest.TestDeviceSimulator)
            .AddTestDevice("0123456789ABCDEF0123456789ABCDEF")
            .Build();

        // Load a banner ad.
        this.bannerView.LoadAd(adRequest);
    }

    #region Banner callback handlers

    public void HandleAdLoaded(object sender, EventArgs args)
    {
        MonoBehaviour.print("HandleAdLoaded event received");
        MonoBehaviour.print(String.Format("Ad Height: {0}, width: {1}",
            this.bannerView.GetHeightInPixels(),
            this.bannerView.GetWidthInPixels()));
    }

    public void HandleAdFailedToLoad(object sender, AdFailedToLoadEventArgs args)
    {
        MonoBehaviour.print(
                "HandleFailedToReceiveAd event received with message: " + args.Message);
    }

    public void HandleAdOpening(object sender, EventArgs args)
    {
        MonoBehaviour.print("HandleAdOpening event received");
    }

    public void HandleAdClosed(object sender, EventArgs args)
    {
        MonoBehaviour.print("HandleAdClosed event received");
    }

    #endregion
}

Здесь функция AdSize.GetCurrentOrientationAnchoredAdaptiveBannerAdSizeWithWidth используется для получения размера баннера в закрепленном положении для текущей ориентации интерфейса. Для предварительной загрузки привязанного баннера в заданной ориентации используйте соответствующую функцию из AdSize.GetPortraitAnchoredAdaptiveBannerAdSizeWithWidth и AdSize.GetLandscapeAnchoredAdaptiveBannerAdSizeWithWidth .