Banery reklamowe

Banery reklamowe to prostokątne reklamy, które zajmują część układu aplikacji. Pozostają na ekranie, gdy użytkownicy wchodzą w interakcję z aplikacją – są zakotwiczone u góry lub u dołu ekranu albo pozostają w tekście podczas przewijania strony. Banery reklamowe mogą być automatycznie odświeżane po upływie określonego czasu. Więcej informacji znajdziesz w artykule Omówienie banerów reklamowych.

Z tego przewodnika dowiesz się, jak zacząć korzystać z zablokowanych banerów reklamowych, które maksymalizują skuteczność dzięki optymalizacji rozmiaru reklamy na każdym urządzeniu za pomocą określonej przez Ciebie szerokości.

Zakotwiczone banery adaptacyjne to reklamy o stałych proporcjach, a nie zwykłe reklamy o stałym rozmiarze. Format obrazu jest podobny do standardu branżowego 320 x 50. Gdy określisz pełną szerokość, wyświetli się reklama o optymalnej wysokości dla tej szerokości. Optymalna wysokość nie zmienia się w przypadku żądań z tego samego urządzenia, a otaczające je widoki nie muszą przesuwać się, gdy reklama jest odświeżana.

Wymagania wstępne

Zawsze testuj reklamy za pomocą reklam testowych

Podczas tworzenia i testowania aplikacji używaj reklam testowych, a nie reklam produkcyjnych. Jeśli tego nie zrobisz, możemy zawiesić Twoje konto.

Najłatwiejszym sposobem wczytywania reklam testowych jest użycie dedykowanego identyfikatora jednostki reklamowej na potrzeby testów w przypadku banerów na Androida:

/21775744923/example/adaptive-banner

Jest on specjalnie skonfigurowany tak, aby zwracać reklamy testowe w przypadku każdego żądania. Możesz go używać w swoich aplikacjach podczas kodowania, testowania i debugowania. Pamiętaj, aby przed opublikowaniem aplikacji zastąpić go własnym identyfikatorem jednostki reklamowej.

Więcej informacji o działaniu testowych reklam w pakiecie SDK do reklam mobilnych znajdziesz w artykule Testowe reklamy.

Dodawanie do układu elementu AdManagerAdView

Pierwszym krokiem do wyświetlania banera jest umieszczenie AdManagerAdView w układzie aplikacji:

Java

// Create a new ad view.
adView = new AdManagerAdView(this);
adView.setAdUnitId(AD_UNIT);
adView.setAdSize(getAdSize());

// Replace ad container with new ad view.
adContainerView.removeAllViews();
adContainerView.addView(adView);

Kotlin

// Create a new ad view.
val adView = AdManagerAdView(this)
adView.adUnitId = AD_UNIT_ID
adView.setAdSize(adSize)
this.adView = adView

// Replace ad container with new ad view.
binding.adViewContainer.removeAllViews()
binding.adViewContainer.addView(adView)

Wczytywanie reklamy

Po umieszczeniu elementu AdManagerAdView kolejnym krokiem jest załadowanie reklamy. Użyjesz metody loadAd() w klasie AdManagerAdView. Używa on parametru AdManagerAdRequest, który zawiera informacje o czasie wykonywania, np. informacje o kierowaniu, dotyczące pojedynczego żądania reklamy.

Oto przykładowy sposób wczytywania reklamy:

Java

// Start loading the ad in the background.
AdManagerAdRequest adRequest = new AdManagerAdRequest.Builder().build();
adView.loadAd(adRequest);

Kotlin

// Start loading the ad in the background.
val adRequest = AdManagerAdRequest.Builder().build()
adView.loadAd(adRequest)

Jeśli reklama nie załaduje się, nie musisz bezpośrednio żądać nowej, o ile masz skonfigurowaną jednostkę reklamową do odświeżania. Pakiet SDK do reklam mobilnych Google respektuje każdą częstotliwość odświeżania określoną w interfejsie internetowym Ad Managera. Jeśli nie masz włączonego odświeżania, musisz przesłać nową prośbę.

Znakomicie. Twoja aplikacja jest teraz gotowa do wyświetlania reklam typu baner.

Zdarzenia reklamowe

Możesz rejestrować różne zdarzenia w cyklu życia reklamy, m.in. wczytywanie, wyświetlenie i kliknięcie reklamy oraz zdarzenia otwarcia i zamknięcia reklamy. Zalecamy ustawienie wywołania zwrotnego przed wczytaniem banera.

Java

adView.setAdListener(new AdListener() {
    @Override
    public void onAdClicked() {
      // Code to be executed when the user clicks on an ad.
    }

    @Override
    public void onAdClosed() {
      // Code to be executed when the user is about to return
      // to the app after tapping on an ad.
    }

    @Override
    public void onAdFailedToLoad(LoadAdError adError) {
      // Code to be executed when an ad request fails.
    }

    @Override
    public void onAdImpression() {
      // Code to be executed when an impression is recorded
      // for an ad.
    }

    @Override
    public void onAdLoaded() {
      // Code to be executed when an ad finishes loading.
    }

    @Override
    public void onAdOpened() {
      // Code to be executed when an ad opens an overlay that
      // covers the screen.
    }
});

Kotlin

adView.adListener = object: AdListener() {
    override fun onAdClicked() {
      // Code to be executed when the user clicks on an ad.
    }

    override fun onAdClosed() {
      // Code to be executed when the user is about to return
      // to the app after tapping on an ad.
    }

    override fun onAdFailedToLoad(adError : LoadAdError) {
      // Code to be executed when an ad request fails.
    }

    override fun onAdImpression() {
      // Code to be executed when an impression is recorded
      // for an ad.
    }

    override fun onAdLoaded() {
      // Code to be executed when an ad finishes loading.
    }

    override fun onAdOpened() {
      // Code to be executed when an ad opens an overlay that
      // covers the screen.
    }
}

Każda z metod, które można zastąpić w AdListener, odpowiada zdarzeniu w cyklu życia reklamy.

Metody, które można zastąpić
onAdClicked() Metoda onAdClicked() jest wywoływana, gdy zostanie zarejestrowane kliknięcie reklamy.
onAdClosed() Metoda onAdClosed() jest wywoływana, gdy użytkownik wraca do aplikacji po obejrzeniu docelowego adresu URL reklamy. Aplikacja może go użyć do wznowienia zawieszonych działań lub wykonania innych czynności niezbędnych do przygotowania się do interakcji.
onAdFailedToLoad() Metoda onAdFailedToLoad() jest jedyną metodą, która zawiera parametr. Parametr błędu typu LoadAdError opisuje błąd, który wystąpił. Więcej informacji znajdziesz w dokumentacji debugowania błędów wczytywania reklam.
onAdImpression() Metoda onAdImpression() jest wywoływana, gdy zostanie zarejestrowane wyświetlenie reklamy.
onAdLoaded() Metoda onAdLoaded() jest wykonywana po zakończeniu wczytywania reklamy. Jeśli chcesz opóźnić dodanie AdManagerAdView do aktywności lub fragmentu, aż upewnisz się, że reklama zostanie załadowana, możesz to zrobić tutaj.
onAdOpened() Metoda onAdOpened() jest wywoływana, gdy reklama otwiera nakładkę zasłaniającą ekran.

Sprzętowa akceleracja reklam wideo

Aby reklamy wideo wyświetlały się w przypadku wyświetleń banerów reklamowych, musisz włączyć przyspieszenie sprzętowe.

Akceleracja sprzętowa jest domyślnie włączona, ale niektóre aplikacje mogą ją wyłączyć. Jeśli dotyczy to Twojej aplikacji, zalecamy włączenie akceleracji sprzętowej dla klas Activity, które korzystają z reklam.

Włączanie akceleracji sprzętowej

Jeśli aplikacja nie działa prawidłowo, gdy przyspieszenie sprzętowe jest włączone globalnie, możesz kontrolować to również w przypadku poszczególnych działań. Aby włączyć lub wyłączyć akcelerację sprzętową, możesz użyć atrybutu android:hardwareAccelerated w elementach <application> i <activity> w pliku AndroidManifest.xml. Ten przykład włącza akcelerację sprzętową dla całej aplikacji, ale wyłącza ją w przypadku jednego działania:

<application android:hardwareAccelerated="true">
    <!-- For activities that use ads, hardwareAcceleration should be true. -->
    <activity android:hardwareAccelerated="true" />
    <!-- For activities that don't use ads, hardwareAcceleration can be false. -->
    <activity android:hardwareAccelerated="false" />
</application>

Więcej informacji o opcjach sterowania akceleracją sprzętową znajdziesz w przewodniku na ten temat. Pamiętaj, że akceleracji sprzętowej nie można włączyć w przypadku poszczególnych wyświetleń reklam, jeśli dana aktywność jest wyłączona. Aby to zrobić, musisz włączyć akcelerację sprzętową dla całej aktywności.

Ręczne zliczanie wyświetleń

Ręczne liczenie wyświetleń jest zgodne tylko z kampaniami ze sprzedażą bezpośrednią i w kampaniach autoreklam z kreacjami trafikowanymi bezpośrednio w usłudze Ad Manager. Nie należy go używać w przypadku reklam zapasowych ani reklam z sieci zewnętrznych. Więcej informacji znajdziesz w artykule Zliczanie wyświetleń i kliknięć.

Jeśli masz specjalne warunki rejestrowania wyświetleń, możesz ręcznie wysyłać do Ad Managera pingi wyświetleń. Aby to zrobić, przed załadowaniem reklamy włącz AdManagerAdRequest do wyświetleń ręcznych:

Java

AdManagerAdRequest adRequest = new AdManagerAdRequest.Builder()
    .setManualImpressionsEnabled(true)
    .build();

Kotlin

val adRequest = AdManagerAdRequest.Builder()
    .setManualImpressionsEnabled(true)
    .build()

Gdy stwierdzisz, że reklama została zwrócona i jest widoczna na ekranie, możesz ręcznie zarejestrować wyświetlenie:

Java

{ ad_view }.recordManualImpression();

Kotlin

AdManagerAdView.recordManualImpression()

Zdarzenia w aplikacjach

Zdarzenia w aplikacjach umożliwiają tworzenie reklam, które mogą wysyłać komunikaty do kodu aplikacji. Aplikacja może następnie podejmować działania na podstawie tych wiadomości.

Możesz nasłuchiwać zdarzeń Ad Managera w aplikacjach za pomocą narzędzia AppEventListener. Zdarzenia te mogą wystąpić w dowolnym momencie cyklu życia reklamy, nawet przed wywołaniem funkcji onAdLoaded().

Java

public interface AppEventListener {
  void onAppEvent(String name, String info);
}

Kotlin

interface AppEventListener {
    fun onAppEvent(name: String, info: String)
}

void onAppEvent(String name, String info) jest wywoływany, gdy w reklamie wystąpi zdarzenie aplikacji. Ten interfejs może być implementowany przez Twoją aktywność lub dowolny inny obiekt:

Java

import com.google.android.gms.ads.admanager.*;

public class BannerExample extends Activity implements AppEventListener {
}

Kotlin

import com.google.android.gms.ads.admanager.*

class BannerExample : Activity(), AppEventListener {
}

a następnie przekazano do AdManagerAdView:

Java

AdManagerAdView.setAppEventListener(this);

Kotlin

AdManagerAdView.appEventListener = this

Oto przykładowy sposób zmiany koloru tła aplikacji w zależności od zdarzenia aplikacji o nazwie koloru:

Java

@Override
public void onAppEvent(String name, String info) {
  if ("color".equals(name)) {
    if ("green".equals(info)) {
      // Set background color to green.
    } else if ("blue".equals(info)) {
      // Set background color to blue.
    } else {
      // Set background color to black.
    }
  }
}

Kotlin

override fun onAppEvent(name: String?, info: String?) {
    if (name == "color") {
        when (info) {
            "green" -> {
                // Set background color to green.
            }
            "blue" -> {
                // Set background color to blue.
            }
            else -> {
                // Set background color to black.
            }
        }
    }
}

A tutaj jest odpowiednia kreacja, która wysyła do detektora wiadomości o zdarzeniach aplikacji dotyczącej kolorów:

<html>
<head>
  <script src="//www.gstatic.com/afma/api/v1/google_mobile_app_ads.js"></script>
  <script>
    document.addEventListener("DOMContentLoaded", function() {
      // Send a color=green event when ad loads.
      admob.events.dispatchAppEvent("color", "green");

      document.getElementById("ad").addEventListener("click", function() {
        // Send a color=blue event when ad is clicked.
        admob.events.dispatchAppEvent("color", "blue");
      });
    });
  </script>
  <style>
    #ad {
      width: 320px;
      height: 50px;
      top: 0px;
      left: 0px;
      font-size: 24pt;
      font-weight: bold;
      position: absolute;
      background: black;
      color: white;
      text-align: center;
    }
  </style>
</head>
<body>
  <div id="ad">Carpe diem!</div>
</body>
</html>

Aby zobaczyć przykład implementacji zdarzeń aplikacji w aplikacji demonstracyjnej interfejsu API, zapoznaj się z artykułem Zdarzenia aplikacji w Ad Managerze – przykład.

Java Kotlin

Dodatkowe materiały

Przykłady w GitHubie

  • Przykłady banerów reklamowych zakotwiczonych: Java | Kotlin
  • Demonstracja funkcji zaawansowanych: Java | Kotlin

Dalsze kroki

Banery zwijane

Zwijane banery reklamowe to banery reklamowe, które początkowo wyświetlają się jako większa nakładka oraz przycisk, który zwija reklamę do mniejszego rozmiaru. Możesz go użyć, aby jeszcze bardziej zoptymalizować skuteczność. Więcej informacji znajdziesz w artykule Zwijane banery reklamowe.

Wbudowane banery adaptacyjne

Wbudowane banery adaptacyjne są większe i wyższe od zakotwiczonych banerów adaptacyjnych. Mają zmienną wysokość i mogą zajmować całą wysokość ekranu. W przypadku aplikacji, które umieszczają banery reklamowe w treściach, które można przewijać, zalecamy stosowanie banerów śródtekstowych zamiast zakotwiczonych banerów adaptacyjnych. Więcej informacji znajdziesz w sekcji inline adaptive banner.

Przeglądaj inne tematy