---
metadata:
  - name: generator
    content: Diplodoc Platform v5.57.3
alternate:
  - https://ads.yandex.com/helpcenter/en/easy/integration/unity/formats/banner.md
  - https://ads.yandex.com/helpcenter/ru/easy/integration/unity/formats/banner.md
  - https://ads.yandex.com/helpcenter/zh/easy/integration/unity/formats/banner.md
  - href: zh/easy/integration/unity/formats/banner.md
    type: text/markdown
    title: Markdown version
  - href: ../llms.txt
    type: text/markdown
    title: llms.txt
---
> **Documentation Index:** Fetch the complete configuration index at https://ads.yandex.com/helpcenter/zh/llms.txt

# 横幅广告

## 横幅广告类型

Yandex Mobile Ads SDK 提供三种类型的横幅广告：

#|
||

**横幅广告**

|

**描述**

|

**使用场景**

||
||

粘性横幅广告

|

固定在屏幕边缘并显示在其他元素之上的横幅广告。此类横幅广告不受屏幕滚动影响。

|

如果您希望横幅广告保持“固定效果”，即保持位置不变，即使用户滚动浏览屏幕也始终显示在内容上方。

||
||

内嵌横幅广告

|

嵌入应用中（例如，嵌入内容或列表中）的横幅广告，如同用户界面元素一样呈现。

|

横幅广告应成为页面内容的一部分，例如出现在动态消息中、帖子之间或作为列表项显示。

||
||

固定横幅广告

|

固定在特定位置或适用于固定高度空间的横幅广告。

|

当您需要在静态位置投放横幅广告时，例如在工具栏下方或屏幕底部。

||
|#

所有类型的横幅广告都会每隔 60 秒自动更新一次广告创意。

{% note tip %}

要设置自定义自动更新周期，请联系您的专属经理。

{% endnote %}

从代码角度来看，这些横幅广告仅在尺寸设置方式上有所不同。例如：

{% list tabs %}

- 粘性横幅广告

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

- 内嵌横幅广告

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

- 固定横幅广告

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

{% endlist %}


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

[演示项目](https://ads.yandex.com/helpcenter/zh/easy/integration/unity/testing.md#demo)中提供了展示所有格式类型运作原理的示例。

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


#|
||

**实体**

|

**描述**

||
||

`BannerAdSize`

|

横幅广告高度：

- **不得**超过屏幕高度的 15%。

- 必须至少为 50 **dp/pt** (**Android/iOS**)。

所有横幅广告尺寸必须以 **dp** 为单位指定。

||
||

`adUnitIdAndroid` /
`adUnitIdiOS`

|

用途：

- **开发模式**，用于配合[演示广告单元](https://ads.yandex.com/helpcenter/zh/easy/integration/unity/testing.md#blocks)使用。

- **生产模式**，用于配合 `R-M-XXXXXX-Y` 使用（实际 ID 请在 Yandex Advertising Network 界面查询）。`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()
    {
        BannerAdSize adSize = bannerType == BannerType.Sticky
            ? BannerAdSize.StickySize(useScreenWidth ? ScreenUtils.ConvertPixelsToDp((int)Screen.safeArea.width) : manualWidth)
            : BannerAdSize.InlineSize(useScreenWidth ? ScreenUtils.ConvertPixelsToDp((int)Screen.safeArea.width) : manualWidth, bannerHeight);

        banner = new Banner(currentAdUnitId, adSize, bannerPosition);

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

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

    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: zh/easy/_includes/notes-unity-easy-guide.md -->
创建并运行您的项目。您可以通过在 **Android Studio** 的 **Logcat** 中搜索 `YandexAds` 关键字来检查集成是否成功：
<!-- endsource: zh/easy/_includes/notes-unity-easy-guide.md -->

```
[Integration] Ad type App Open was integrated successfully
```
