---
metadata:
  - name: generator
    content: Diplodoc Platform v5.50.6
alternate:
  - https://boost.yandex.com/doc/en/ad-monetization/easy/integration/unity/formats/banner.md
  - https://boost.yandex.com/doc/ru/ad-monetization/easy/integration/unity/formats/banner.md
---
> **Documentation Index:** Fetch the complete configuration index at https://boost.yandex.com/doc/ru/llms.txt

# Баннер

## Виды баннеров

В Yandex Mobile Ads SDK есть три вида баннеров:

#|
||

**Баннер**

|

**Описание**

|

**Когда использовать**

||
||

Sticky

|

Баннер-липучка, который примыкает к краю экрана и появляется поверх других элементов. Устойчивый к прокрутке.

|

Когда баннер должен «приклеиться» и находиться поверх контента даже при прокрутке.

||
||

Inline

|

Баннер, который встраивается как элемент UI — в списки, контент и т. д.

|

Когда баннер должен быть частью контента: в ленте новостей, между постами, как элемент списка.

||
||

Fixed

|

Используется для закрепленных баннеров или когда пространство определено по высоте.

|

Когда нужно простое статичное размещение баннера — например, под тулбаром или снизу.

||
|#

Все виды автоматически обновляют креатив каждые 60 секунд.

{% note tip %}

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

{% endnote %}

Программно виды отличаются лишь тем, как задается их размер. Примеры:

{% list tabs %}

- Sticky-баннер

    ```C#
    BannerAdSize.Sticky(int width)
    ```

- Inline-баннер

    ```C#
    BannerAdSize.Inline(int width, int maxHeight)
    ```

- Fixed-баннер

    ```C#
    BannerAdSize.Fixed(int width, int height)
    ```

{% endlist %}


<!-- source: ru/ad-monetization/easy/_includes/notes-unity-easy-guide.md -->
{% note info %}

Пример работы всех типов форматов есть в [демопроекте](https://boost.yandex.com/doc/ru/ad-monetization/easy/integration/unity/testing.md#demo).

{% endnote %}
<!-- endsource: ru/ad-monetization/easy/_includes/notes-unity-easy-guide.md -->


#|
||

**Сущность**

|

**Описание**

||
||

`BannerAdSize`

|

Высота баннера должна:

- **не** превышать 15% от высоты экрана;

- составлять не менее 50 **dp/pt** (**Android/iOS**).

Все размеры баннера должны передаваться строго в **dp**.

||
||

`adUnitIdAndroid` / 
`adUnitIdiOS`

|

Используйте:

- **development mode** — для работы с [демоблоками](https://boost.yandex.com/doc/ru/ad-monetization/easy/integration/unity/testing.md#blocks);

- **production mode** — для работы с `R-M-XXXXXX-Y` (уточните реальный ID в интерфейсе Boost). `R-M-XXXXXX-Y` — это вид рабочего рекламного ID, по которому будут приходить разные креативы.

||
|#


## Пример создания баннера

```C#
using UnityEngine;
using UnityEngine.Events;
using YandexMobileAds;
using YandexMobileAds.Base;
using System;

[AddComponentMenu("Yandex Ads/Banner Component")]
public class BannerComponent : MonoBehaviour
{
    public enum BannerType
    {
        Inline,
        Sticky,
        Fixed
    }

    [Header("Banner Settings")]
    public string bannerName = "Default Banner";
    public BannerType bannerType = BannerType.Inline;

    [Header("Ad Unit IDs")]
    [Tooltip("Ad Unit ID for Android")]
    public string adUnitIdAndroid = "demo-banner-yandex";

    [Tooltip("Ad Unit ID for iOS")]
    public string adUnitIdiOS = "demo-banner-yandex";

    [Header("Banner Configuration")]
    public AdPosition bannerPosition = AdPosition.BottomCenter;
    public bool useScreenWidth = false;
    public int manualWidth = 320;
    public int bannerHeight = 50;
    public bool showAfterLoading = true;

    private Banner banner;

    [System.Serializable]
    public class AdEvent : UnityEvent { }

    [System.Serializable]
    public class AdEventString : UnityEvent<string> { }

    [System.Serializable]
    public class AdEventWithBanner : UnityEvent<Banner> { }

    [Header("Load Callbacks")]
    public AdEventWithBanner OnAdLoaded;
    public AdEventString OnAdFailedToLoad;

    [Header("Interaction Callbacks")]
    public AdEventWithBanner OnAdClicked;
    public AdEventWithBanner OnLeftApplication;
    public AdEventWithBanner OnReturnedToApplication;
    public AdEventString OnImpression;

    [Header("Configure Callbacks")]
    public AdEventWithBanner OnAdConfigured;
    public AdEventString OnAdConfigurationFailed;

    private string currentAdUnitId
    {
        get
        {
#if UNITY_IOS
            return adUnitIdiOS;
#elif UNITY_ANDROID
            return adUnitIdAndroid;
#else
            Debug.LogWarning("Unsupported platform for Yandex Ads. Using IOS Ad Unit ID by default.");
            return adUnitIdAndroid;
#endif
        }
    }

    private void Start()
    {
        if (!string.IsNullOrEmpty(currentAdUnitId))
        {
            this.load();
        }
        else
        {
            Debug.LogError("Banner configuration failed. Ad Unit ID is missing.");
        }
    }

    private void ConfigureBanner()
    {
        int widthDp = useScreenWidth ? ScreenUtils.ConvertPixelsToDp((int)Screen.safeArea.width) : manualWidth;
        BannerAdSize adSize = bannerType == BannerType.Sticky
            ? BannerAdSize.Sticky(widthDp)
            : bannerType == BannerType.Fixed
            ? BannerAdSize.Fixed(widthDp, bannerHeight)
            : BannerAdSize.Inline(widthDp, bannerHeight);

        banner = new Banner(adSize, bannerPosition);

        banner.OnAdLoaded += HandleAdLoaded;
        banner.OnAdFailedToLoad += HandleAdFailedToLoad;
        banner.OnAdClicked += HandleAdClicked;
        banner.OnImpression += HandleImpression;
    }

    private void load()
    {
        ConfigureBanner();
        banner.LoadAd(new AdRequest(currentAdUnitId));
    }

    public void loadAd()
    {
        this.load();
    }
    
    public void OnDestroy()
    {
        banner.OnAdLoaded -= HandleAdLoaded;
        banner.OnAdFailedToLoad -= HandleAdFailedToLoad;
        banner.OnAdClicked -= HandleAdClicked;
        banner.OnImpression -= HandleImpression;

        banner.Destroy();
        banner = null;
    }

    #region Event Handlers
    private void HandleAdLoaded(object sender, EventArgs args)
    {
        OnAdLoaded?.Invoke(banner);
        if (showAfterLoading)
        {
            banner.Show();
        }
    }

    private void HandleAdFailedToLoad(object sender, AdFailureEventArgs args) => OnAdFailedToLoad?.Invoke(args.Message);
    private void HandleAdClicked(object sender, EventArgs args) => OnAdClicked?.Invoke(banner);
    private void HandleImpression(object sender, ImpressionData impressionData) =>
        OnImpression?.Invoke(impressionData?.rawData ?? string.Empty);
    #endregion
}
```



## Проверка интеграции

<!-- source: ru/ad-monetization/easy/_includes/notes-unity-easy-guide.md -->
Соберите и запустите проект. Успешную интеграцию можно проверить в **Logcat** **Android Studio** по ключевому слову `YandexAds`:
<!-- endsource: ru/ad-monetization/easy/_includes/notes-unity-easy-guide.md -->

```
[Integration] Ad type Banner was integrated successfully
```
