Select platform: [Android](https://developers.google.com/admob/android/next-gen/banner "View this page for the Android platform documentation.") [iOS](https://developers.google.com/admob/ios/banner "View this page for the iOS platform documentation.") [Unity](https://developers.google.com/admob/unity/banner "View this page for the Unity platform documentation.") [Flutter](https://developers.google.com/admob/flutter/banner "View this page for the Flutter platform documentation.") [Android (Legacy)](https://developers.google.com/admob/android/banner "View this page for the Android (Legacy) platform documentation.")

<br />

Banner views are rectangular image or text ads that occupy a spot on screen.
They stay on screen while users are interacting with the app, and can refresh
automatically after a certain period of time. If you're new to mobile
advertising, they're a great place to start.

[Case study](https://admob.google.com/home/resources/fingersoft-uses-admob-in-app-purchases-to-make-the-most-of-hill-climb-racing/).


This guide shows you how to integrate banner views into a Unity app. In addition
to code snippets and instructions, it also includes information about sizing
banners properly and links to additional resources.

## Prerequisites

Before you continue, [set up Google Mobile Ads Unity Plugin](https://developers.google.com/admob/unity/quick-start).

## Always test with test ads

The following sample code contains an ad unit ID which you can use to request
test ads. It's been specially configured to return test ads rather than
production ads for every request, making it safe to use.

However, after you've registered an app in the
AdMob web interface and created your own ad unit
IDs for use in your app, explicitly [configure your device as a test
device](https://developers.google.com/admob/unity/test-ads#enable_test_devices) during
development.

### Android

`ca-app-pub-3940256099942544/1033173712`

### iOS

`ca-app-pub-3940256099942544/4411468910`

## Initialize Google Mobile Ads Unity Plugin

Before loading ads, have your app initialize Google Mobile Ads Unity Plugin by calling
`MobileAds.Initialize()`. This needs to be done only once, ideally at app launch.

    using GoogleMobileAds;
    using GoogleMobileAds.Api;

    public class GoogleMobileAdsDemoScript : MonoBehaviour
    {
        public void Start()
        {
            // Initialize Google Mobile Ads Unity Plugin.
            MobileAds.Initialize((InitializationStatus initStatus) =>
            {
                // This callback is called once the MobileAds SDK is initialized.
            });
        }
    }

If you're using mediation, wait until the callback occurs before loading ads as
this will ensure that all mediation adapters are initialized.

## BannerView example

The following sample code details how to use the banner view. In the example,
create an instance of a banner view, use an
`AdRequest` to load an ad into the banner view, and
then extend its capabilities by handling lifecycle events.

### Create a banner view

The first step in using a banner view is to create an instance of a banner view.

    // Create a 320x50 banner at top of the screen.
    bannerView = new BannerView("AD_UNIT_ID", AdSize.Banner, AdPosition.Top);

Replace <var class="readonly" translate="no">AD_UNIT_ID</var> with your ad unit ID.

The constructor for a `BannerView` has the following
parameters:

- `adUnitId`: The ad unit ID of the banner ad to load.
- `AdSize`: The [banner size](https://developers.google.com/admob/unity/banner#banner_sizes) you'd like to use.
- `AdPosition`: The position where the banner views should be placed.

> [!NOTE]
> **Note:** ad unit IDs are platform dependent. Use an iOS ad unit for making ad requests on iOS and an Android ad unit ID for making requests on Android.

#### (Optional) Create a banner view with a custom position

For greater control over where a banner view is placed on screen than what's
offered by `AdPosition` values, use the constructor
that has x- and y-coordinates as parameters:

    // Create a 320x50 banner views at coordinate (0,50) on screen.
    bannerView = new BannerView("AD_UNIT_ID", AdSize.Banner, 0, 50);

The top-left corner of the banner view is positioned at the x and y values
passed to the constructor, where the origin is the top-left of the screen.

#### (Optional) Create a banner view with a custom size

In addition to using an `AdSize` constant, you can also specify a custom size
for your ad:

    // Create a 250x250 banner at the bottom of the screen.
    AdSize adSize = new AdSize(250, 250);
    bannerView = new BannerView("AD_UNIT_ID", adSize, AdPosition.Bottom);

### Load a banner ad

To load an ad, create an `AdRequest` and pass it to
the `LoadAd()` method.

    // Send a request to load an ad into the banner view.
    bannerView.LoadAd(new AdRequest());


> [!TIP]
> **Tip:** You can use ad load calls to build up a cache of preloaded ads before you intend to show them, so that ads can be shown with zero latency when needed. Because ads expire after an hour, you should clear this cache and reload with new ads every hour.

<br />

### Listen to banner view events

To customize the behavior of your ad, you can hook into a number of events in
the ad's lifecycle, such as loading, opening, or closing. To listen for these
events, register a delegate:

    bannerView.OnBannerAdLoaded += () =>
    {
        // Raised when an ad is loaded into the banner view.
    };
    bannerView.OnBannerAdLoadFailed += (LoadAdError error) =>
    {
        // Raised when an ad fails to load into the banner view.
    };
    bannerView.OnAdPaid += (AdValue adValue) =>
    {
        // Raised when the ad is estimated to have earned money.
    };
    bannerView.OnAdImpressionRecorded += () =>
    {
        // Raised when an impression is recorded for an ad.
    };
    bannerView.OnAdClicked += () =>
    {
        // Raised when a click is recorded for an ad.
    };
    bannerView.OnAdFullScreenContentOpened += () =>
    {
        // Raised when an ad opened full screen content.
    };
    bannerView.OnAdFullScreenContentClosed += () =>
    {
        // Raised when the ad closed full screen content.
    };

### Destroy the banner view

To destroy the banner, call the `Destroy()` method to release resources:

    if (bannerView != null)
    {
        // Always destroy the banner view when no longer needed.
        bannerView.Destroy();
        bannerView = null;
    }

For banners that fail to load, we recommend you to refresh the banner instead
of destroying and creating a new one. For details, see
[Refresh an ad](https://developers.google.com/admob/unity/banner#refresh_an_ad).

## Refresh an ad

If you configured your ad unit to refresh, you don't need to request another ad
when the ad fails to load. Google Mobile Ads Unity Plugin respects any refresh rate
you specified in the AdMob UI. If you haven't enabled
refresh, issue a new request. For more details on ad unit refresh, such as
setting a refresh rate, see

[Use automatic refresh for Banner ads](https://support.google.com/admob/answer/3245199).

> [!NOTE]
> **Note:** When setting a refresh rate in the AdMob UI, the automatic refresh occurs only if the banner is visible on screen.

## Banner sizes

Large adaptive banners provide a larger format designed for non-scrolling
layouts. Compared to standard anchored adaptive banners, these banners
allow a taller maximum height (up to 20% of screen height, between 50 and
150 dp). This increased space is optimized for video content.

The following table lists the standard banner sizes:

| Size in dp (WxH) | Description | Availability | AdSize constant |
|---|---|---|---|
| 320x50 | Standard Banner | Phones and Tablets | `BANNER` |
| 320x100 | Large Banner | Phones and Tablets | `LARGE_BANNER` |
| 300x250 | IAB Medium Rectangle | Phones and Tablets | `MEDIUM_RECTANGLE` |
| 468x60 | IAB Full-Size Banner | Tablets | `FULL_BANNER` |
| 728x90 | IAB Leaderboard | Tablets | `LEADERBOARD` |
| *Provided width* x *Adaptive height* | [Adaptive banner](https://developers.google.com/admob/unity/banner/anchored-adaptive) | Phones and Tablets | N/A |
| *Screen width* x 32\|50\|90 | [Smart banner](https://developers.google.com/admob/unity/banner/smart) | Phones and Tablets | `SMART_BANNER` |
| Learn more about [Adaptive Banners](https://developers.google.com/admob/unity/banner/anchored-adaptive), intended to replace [Smart Banners](https://developers.google.com/admob/unity/banner/smart). ||||

> [!NOTE]
> **Note:** If an Android app tries to load a banner that's too big for its layout, the SDK won't display it, logging an error message instead.

## Additional resources

- [HelloWorld example](https://github.com/googleads/googleads-mobile-unity/tree/main/samples/HelloWorld): A minimal implementation of all ad formats.

<!-- -->

- [Sample use
  case](https://admob.google.com/home/resources/fingersoft-uses-admob-in-app-purchases-to-make-the-most-of-hill-climb-racing/)