Banery reklamowe

Banery reklamowe to prostokątne reklamy graficzne lub tekstowe, które zajmują miejsce na ekranie. Pozostają na ekranie, gdy użytkownicy wchodzą w interakcję z aplikacją, i mogą być odświeżane automatycznie po upływie określonego czasu. Jeśli dopiero zaczynasz korzystać z reklam mobilnych, to dobry punkt wyjścia. Studium przypadku.

Z tego przewodnika dowiesz się, jak zintegrować banery reklamowe z AdMob z aplikacją Unity. Oprócz fragmentów kodu i instrukcji znajdziesz też informacje o poprawnym rozmiarze banerów i linki do dodatkowych materiałów.

Wymagania wstępne

Wykonaj te czynności. Twoja aplikacja w Unity powinna być już zaimportowana do aplikacji.

Tworzenie baneru

Pierwszym krokiem do wyświetlenia banera jest utworzenie obiektu BannerView w skrypcie C# dołączonym do GameObject.

Aby ułatwić integrację reklam za pomocą Edytora Unity, wypróbuj nowe miejsce docelowe w wersji beta.

using System;
using UnityEngine;
using GoogleMobileAds.Api;
...
public class GoogleMobileAdsDemoScript : MonoBehaviour
{
    private BannerView bannerView;
    ...
    public void Start()
    {
        // Initialize the Google Mobile Ads SDK.
        MobileAds.Initialize(initStatus => { });

        this.RequestBanner();
    }

    private void RequestBanner()
    {
        #if UNITY_ANDROID
            string adUnitId = "ca-app-pub-3940256099942544/6300978111";
        #elif UNITY_IPHONE
            string adUnitId = "ca-app-pub-3940256099942544/2934735716";
        #else
            string adUnitId = "unexpected_platform";
        #endif

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

Konstruktor elementu BannerView zawiera te parametry:

  • adUnitId – identyfikator jednostki reklamowej AdMob, z której ma być wczytywany BannerView.
  • AdSize – rozmiar reklamy AdMob, którego chcesz użyć (szczegóły znajdziesz w sekcji Rozmiary banerów).
  • AdPosition – położenie, w którym ma zostać umieszczony baner reklamowy. Lista wartości AdPosition zawiera prawidłowe wartości pozycji reklamy.

Warto zwrócić uwagę, jak używane są różne jednostki reklamowe w zależności od platformy. Do wysyłania żądań reklam w iOS musisz używać jednostki reklamowej na iOS, a w przypadku żądań Androida – jednostki reklamowej na Androida.

(Opcjonalnie) Niestandardowa pozycja reklamy

Aby mieć większą kontrolę nad tym, gdzie znajduje się element BannerView na ekranie, niż zapewnia to wartość AdPosition, użyj BannerViewkonstruktora z współrzędnymi X i Y jako parametry:

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

Lewy górny róg obiektu BannerView zostanie umieszczony w wartościach x i y przekazanych do konstruktora, gdzie punkt początkowy znajduje się u góry po lewej stronie ekranu.

(Opcjonalnie) Niestandardowe rozmiary reklam

Oprócz korzystania ze stałej wartości AdSize możesz też określić rozmiar niestandardowy reklamy:

AdSize adSize = new AdSize(250, 250);
BannerView bannerView = new BannerView(adUnitId, adSize, AdPosition.Bottom);

Zawsze testuj z reklamami testowymi

Kod w przykładzie powyżej zawiera identyfikator jednostki reklamowej. Możesz go użyć, aby zażądać wyświetlenia reklamy. Została ona specjalnie skonfigurowana pod kątem zwracania reklam testowych zamiast produkcyjnych na każde żądanie, co sprawia, że można z niego bezpiecznie korzystać.

Jeśli jednak zarejestrujesz aplikację w interfejsie AdMob i utworzysz własne identyfikatory jednostek reklamowych do użycia w jej aplikacji, musisz jednocześnie skonfigurować urządzenie jako urządzenie testowe podczas programowania. To bardzo ważne. Testowanie z użyciem prawdziwych reklam (nawet jeśli nigdy ich nie klikasz) narusza zasady AdMob i może spowodować zawieszenie konta. Przeczytaj artykuł Reklamy testowe, aby dowiedzieć się, jak możesz mieć pewność, że zawsze otrzymujesz reklamy testowe podczas tworzenia.

Wczytywanie reklamy

Po utworzeniu wystąpienia BannerView trzeba załadować reklamę. Zrobiliśmy to za pomocą metody loadAd() w klasie BannerView. Wykorzystuje argument AdRequest, który zawiera informacje o czasie działania (np. informacje o kierowaniu) dotyczące pojedynczego żądania reklamy.

Oto przykład wczytywania reklamy:

...
    private void RequestBanner()
    {
        #if UNITY_ANDROID
            string adUnitId = "ca-app-pub-3940256099942544/6300978111";
        #elif UNITY_IPHONE
            string adUnitId = "ca-app-pub-3940256099942544/2934735716";
        #else
            string adUnitId = "unexpected_platform";
        #endif

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

        // Create an empty ad request.
        AdRequest request = new AdRequest.Builder().Build();

        // Load the banner with the request.
        this.bannerView.LoadAd(request);
    }
...

To już wszystko Twoja aplikacja może już wyświetlać banery reklamowe z AdMob.

Zdarzenia reklamy

Aby dodatkowo dostosować działanie reklamy, możesz ją przechwytywać na podstawie szeregu zdarzeń występujących w cyklu życia reklamy: wczytywanie, otwieranie, zamykanie itd. Reaguj na te zdarzenia, rejestrując przedstawiciela dla odpowiedniej usługi EventHandler, jak pokazano poniżej.

...
using System;
using UnityEngine;
using GoogleMobileAds.Api;
...
public class GoogleMobileAdsDemoScript : MonoBehaviour
{
    private BannerView bannerView;

    public void Start()
    {
        this.RequestBanner();
    }

    private void RequestBanner()
    {

        #if UNITY_ANDROID
            string adUnitId = "ca-app-pub-3940256099942544/6300978111";
        #elif UNITY_IPHONE
            string adUnitId = "ca-app-pub-3940256099942544/2934735716";
        #else
            string adUnitId = "unexpected_platform";
        #endif

        this.bannerView = new BannerView(adUnitId, AdSize.Banner, AdPosition.Top);

        // Called when an ad request has successfully loaded.
        this.bannerView.OnAdLoaded += this.HandleOnAdLoaded;
        // Called when an ad request failed to load.
        this.bannerView.OnAdFailedToLoad += this.HandleOnAdFailedToLoad;
        // Called when an ad is clicked.
        this.bannerView.OnAdOpening += this.HandleOnAdOpened;
        // Called when the user returned from the app after an ad click.
        this.bannerView.OnAdClosed += this.HandleOnAdClosed;
        // Called when the ad click caused the user to leave the application.
        this.bannerView.OnAdLeavingApplication += this.HandleOnAdLeavingApplication;

        // Create an empty ad request.
        AdRequest request = new AdRequest.Builder().Build();

        // Load the banner with the request.
        this.bannerView.LoadAd(request);
    }

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

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

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

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

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

Zdarzenie OnAdFailedToLoad zawiera specjalne argumenty zdarzenia. Przekazuje wystąpienie HandleAdFailedToLoadEventArgs z Message opisującym błąd:

public void HandleOnAdFailedToLoad(object sender, AdFailedToLoadEventArgs args)
{
  MonoBehaviour.print("Banner failed to load: " + args.Message);
  // Handle the ad failed to load event.
};
Zdarzenie reklamoweOpis
OnAdLoaded Zdarzenie OnAdLoaded jest wykonywane po zakończeniu wczytywania reklamy.
OnAdFailedToLoad Zdarzenie OnAdFailedToLoad jest wywoływane, gdy nie uda się wczytać reklamy. Parametr Message opisuje typ błędu, który wystąpił.
OnAdOpening Jest ona wywoływana, gdy użytkownik kliknie reklamę. Jeśli używasz pakietu analitycznego do śledzenia kliknięć, warto to zarejestrować.
OnAdClosed Ta metoda jest wywoływana, gdy użytkownik powróci do aplikacji po obejrzeniu docelowego adresu URL reklamy. Za pomocą aplikacji możesz wznowić zawieszone aktywności lub wykonać inne czynności niezbędne, by się przygotować do interakcji.
OnAdLeavingApplication Ta metoda jest wywoływana po onAdOpened, gdy użytkownik kliknie inną aplikację (np. Sklep Google Play) w tle.

W tabeli poniżej znajdziesz standardowe rozmiary banerów.

Rozmiar w dp (szer.xwys.) Opis Dostępność Stała AdSize
320 x 50 Standardowy baner Telefony i tablety BANNER
320 x 100 Duży baner Telefony i tablety LARGE_BANNER
300 x 250 Średni prostokąt IAB Telefony i tablety MEDIUM_RECTANGLE
468 x 60 Pełnowymiarowy baner IAB Tablety FULL_BANNER
728 x 90 Ads Leaderboard – IAB Tablety LEADERBOARD
Podana szerokość x Wysokość adaptacyjna Baner adaptacyjny Telefony i tablety
Szerokość ekranu x 32|50|90 Baner inteligentny Telefony i tablety SMART_BANNER
Dowiedz się więcej o banerach adaptacyjnych, które zastąpią banery inteligentne.

Czyszczenie banerów reklamowych

Gdy skończysz używać tagu BannerView, wywołaj metodę Destroy(), zanim odwołasz się do niej:

bannerView.Destroy();

Informuje to wtyczkę, że obiekt nie jest już używany i pamięć, którą zajęła, można odzyskać. Jeśli nie wywołasz tej metody, nastąpi wyciek pamięci.

Dodatkowe materiały

Przykłady

Historie sukcesu