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 w tekście podczas przewijania. Banery reklamowe mogą być automatycznie odświeżane po upływie określonego czasu. Aby dowiedzieć się więcej, zapoznaj się z artykułem Omówienie banerów reklamowych.

Z tego przewodnika dowiesz się, jak zacząć korzystać z zakotwiczonych banerów adaptacyjnych, które pozwolą Ci zmaksymalizować skuteczność dzięki optymalizacji rozmiaru reklamy dla każdego urządzenia z wykorzystaniem określonej szerokości reklamy.

Zakotwiczone banery adaptacyjne to reklamy o stałym współczynniku proporcji, a nie reklamy o stałym rozmiarze. Jest on podobny do standardowego standardu 320 x 50. Gdy podasz pełną dostępną szerokość, wyświetli Ci się reklama o optymalnej wysokości dla tej szerokości. Optymalna wysokość nie zmienia się w zależności od żądania wysyłanego z tego samego urządzenia, a okoliczne widoki nie muszą się zmieniać przy odświeżaniu reklamy.

Wymagania wstępne

Zawsze korzystaj z reklam testowych

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

Najprostszym sposobem na wczytanie reklam testowych jest użycie naszego dedykowanego identyfikatora testowej jednostki reklamowej dla banerów na Androida:

ca-app-pub-3940256099942544/9214589741

Został on specjalnie skonfigurowany tak, aby zwracał reklamy testowe w odpowiedzi na każde żądanie i możesz go używać we własnych aplikacjach podczas kodowania, testowania i debugowania. Pamiętaj, by przed opublikowaniem aplikacji zastąpić go własnym identyfikatorem jednostki reklamowej.

Więcej informacji o działaniu reklam testowych z pakietu SDK do reklam mobilnych znajdziesz w artykule Reklamy testowe.

Dodaj AdView do układu

Pierwszym krokiem do wyświetlenia banera jest umieszczenie elementu AdView w układzie elementu Activity lub Fragment, w którym chcesz go wyświetlać.

Java

private AdSize getAdSize() {
  // Determine the screen width (less decorations) to use for the ad width.
  Display display = getWindowManager().getDefaultDisplay();
  DisplayMetrics outMetrics = new DisplayMetrics();
  display.getMetrics(outMetrics);

  float density = outMetrics.density;

  float adWidthPixels = adContainerView.getWidth();

  // If the ad hasn't been laid out, default to the full screen width.
  if (adWidthPixels == 0) {
    adWidthPixels = outMetrics.widthPixels;
  }

  int adWidth = (int) (adWidthPixels / density);
  return AdSize.getCurrentOrientationAnchoredAdaptiveBannerAdSize(this, adWidth);
}

private void loadBanner() {
  
  // Create a new ad view.
  AdView adView = new AdView(this);
  adView.setAdSizes(getAdSize());
  adView.setAdUnitId("ca-app-pub-3940256099942544/9214589741");

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

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

Kotlin


// Determine the screen width (less decorations) to use for the ad width.
// If the ad hasn't been laid out, default to the full screen width.
private val adSize: AdSize
  get() {
    val display = windowManager.defaultDisplay
    val outMetrics = DisplayMetrics()
    display.getMetrics(outMetrics)

    val density = outMetrics.density

    var adWidthPixels = binding.adViewContainer.width.toFloat()
    if (adWidthPixels == 0f) {
      adWidthPixels = outMetrics.widthPixels.toFloat()
    }

    val adWidth = (adWidthPixels / density).toInt()
    return AdSize.getCurrentOrientationAnchoredAdaptiveBannerAdSize(this, adWidth)
  }

private fun loadBanner() {
  
  // Create a new ad view.
  val adView = AdView(this)
  adView.adSizes = adSize
  adView.adUnitId = "ca-app-pub-3940256099942544/9214589741"

  // Create an ad request.
  val adRequest = AdRequest.Builder().build()

  // Start loading the ad in the background.
  adView.loadAd(adRequest)
}

Wczytaj reklamę

Następnym krokiem po utworzeniu AdView jest wczytanie reklamy. Służy do tego metoda loadAd() w klasie AdView. Wykorzystuje parametr AdRequest, który przechowuje w przypadku pojedynczego żądania reklamy informacje o czasie działania, np. o kierowaniu.

Ten przykład pokazuje, jak wczytać reklamę za pomocą metody onCreate() elementu Activity:

Java

private void loadBanner() {
  // Create a new ad view.
  adView = new AdView(this);
  adView.setAdUnitId(AD_UNIT);
  adView.setAdSize(getAdSize());
  
  // Replace ad container with new ad view.
  adContainerView.removeAllViews();
  adContainerView.addView(adView);

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

Kotlin

private fun loadBanner() {
  // This is an ad unit ID for a test ad. Replace with your own banner ad unit ID.
  adView.adUnitId = "/6499/example/banner"
  adView.setAdSize(adSize)
  
  // Create an ad request.
  val adRequest = AdRequest.Builder().build()

  // Start loading the ad in the background.
  adView.loadAd(adRequest)
}

Jeśli reklama się nie wczytuje, nie musisz wysyłać wyraźnie prośby o kolejną, o ile jednostka reklamowa jest skonfigurowana tak, aby się odświeżała. Pakiet SDK do reklam mobilnych Google respektuje częstotliwość odświeżania określoną AdMob w interfejsie internetowym. Jeśli nie masz włączonego odświeżania, musisz wysłać nowe żądanie.

Znakomicie. W Twojej aplikacji są już gotowe do wyświetlania banerów reklamowych.

Zdarzenia reklamowe

Aby jeszcze bardziej dostosować działanie reklamy, możesz brać pod uwagę szereg zdarzeń w jej cyklu życia: wczytanie, otwarcie, zamknięcie itp. Możesz nasłuchiwać tych zdarzeń za pomocą klasy AdListener.

Aby użyć AdListener w AdView, wywołaj metodę setAdListener():

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 zastępujących w metodzie AdListener odpowiada zdarzeniu w cyklu życia reklamy.

Metody zastępowania
onAdClicked() Metoda onAdClicked() jest wywoływana po zarejestrowaniu kliknięcia reklamy.
onAdClosed() Metoda onAdClosed() jest wywoływana, gdy użytkownik wraca do aplikacji po wyświetleniu docelowego adresu URL reklamy. Aplikacja może używać jej do wznawiania zawieszonych działań oraz wykonywania innych czynności niezbędnych do przygotowania się do interakcji. Zapoznaj się z przykładem AdMob AdListener, aby dowiedzieć się, jak wdrożyć metody odbiornika reklam w aplikacji demonstracyjnej Android API.
onAdFailedToLoad() Metoda onAdFailedToLoad() jest jedyną metodą, która zawiera parametr. Parametr błędu typu LoadAdError opisuje, jaki błąd wystąpił. Więcej informacji znajdziesz w dokumentacji debugowania błędów wczytywania reklamy.
onAdImpression() Metoda onAdImpression() jest wywoływana po zarejestrowaniu wyświetlenia reklamy.
onAdLoaded() Metoda onAdLoaded() jest wykonywana po zakończeniu wczytywania reklamy. Jeśli chcesz opóźnić dodawanie elementu AdView do aktywności lub fragmentu do czasu, aż reklama zostanie wczytana, możesz to zrobić tutaj.
onAdOpened() Metoda onAdOpened() jest wywoływana, gdy reklama otwiera nakładkę zasłaniającą ekran.

Akceleracja sprzętowa na potrzeby reklam wideo

Aby reklamy wideo mogły się wyświetlać w ramach wyświetleń banera reklamowego, musisz włączyć akcelerację sprzętową.

Jest ona 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 używają reklam.

Włączanie akceleracji sprzętowej

Jeśli aplikacja nie działa prawidłowo, gdy akceleracja sprzętowa jest włączona globalnie, możesz ją kontrolować również w przypadku poszczególnych aktywności. Aby włączyć lub wyłączyć akcelerację sprzętową, możesz użyć atrybutu android:hardwareAccelerated dla elementów <application> i <activity> w elemencie AndroidManifest.xml. Poniższy przykład włącza akcelerację sprzętową w 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 po akceleracji sprzętowej. Pamiętaj, że akceleracji sprzętowej nie można włączyć akceleracji sprzętowej w poszczególnych wyświetleniach reklam, jeśli dana aktywność jest wyłączona. W tym przypadku działanie akceleracji sprzętowej musi być włączone.

Dodatkowe materiały

Przykłady w GitHubie

  • Przykład zakotwiczonych banerów adaptacyjnych: Java | Kotlin
  • Prezentacja funkcji zaawansowanych: Java | Kotlin

Dalsze kroki

Banery zwijane

Zwijane banery reklamowe to banery reklamowe, które są początkowo wyświetlane jako większa nakładka z przyciskiem umożliwiającym zwijanie reklamy do mniejszego rozmiaru. Możesz użyć ich do dalszej optymalizacji skuteczności. Więcej informacji znajdziesz w artykule o zwijanych banerach reklamowych.

Wbudowane banery adaptacyjne

Wbudowane banery adaptacyjne są większe i wyższe w porównaniu do zakotwiczonych banerów adaptacyjnych. Mają zmienną wysokość, a ich wysokość może sięgać ekranu urządzenia. W przypadku aplikacji, które umieszczają banery reklamowe w przewijanych treściach, zalecamy stosowanie wbudowanych banerów adaptacyjnych zamiast zakotwiczonych banerów adaptacyjnych. Więcej informacji znajdziesz w sekcji Wbudowane banery adaptacyjne.

Przeglądaj inne tematy