Banery reklamowe

Banery reklamowe zajmują miejsce w układzie aplikacji, u góry lub u dołu ekranu urządzenia. Pozostają na ekranie, gdy użytkownicy korzystają z aplikacji, i po pewnym czasie mogą się automatycznie odświeżać. Jeśli nie masz doświadczenia w korzystaniu z reklam mobilnych, będą one doskonałym punktem wyjścia. Studium przypadku.

Z tego przewodnika dowiesz się, jak zintegrować banery reklamoweAdMob z aplikacją na Androida. Oprócz fragmentów kodu i instrukcji znajdziesz też informacje o odpowiednim rozmiarze banerów oraz linki do dodatkowych materiałów.

Wymagania wstępne

Dodaj element AdView do układu

Pierwszym krokiem do wyświetlenia banera jest umieszczenie AdView w układzie Activity lub Fragment, w którym chcesz go wyświetlać. Najprostszym sposobem jest dodanie jej do odpowiedniego pliku układu XML. Oto przykład, który pokazuje właściwość AdView działania:

# main_activity.xml
<com.google.android.gms.ads.AdView
    xmlns:ads="http://schemas.android.com/apk/res-auto"
    android:id="@+id/adView"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_centerHorizontal="true"
    android:layout_alignParentBottom="true"
    ads:adSize="BANNER"
    ads:adUnitId="ca-app-pub-3940256099942544/6300978111">
</com.google.android.gms.ads.AdView>

Zwróć uwagę na te wymagane atrybuty:

  • ads:adSize: ustaw rozmiar reklamy, którego chcesz używać. Jeśli nie chcesz używać rozmiaru standardowego zdefiniowanego przez stałą, możesz zamiast niej ustawić rozmiar niestandardowy. Szczegółowe informacje znajdziesz w sekcji Rozmiar banera.

  • ads:adUnitId: wpisz w tym polu unikalny identyfikator jednostki reklamowej w Twojej aplikacji, w której mają się wyświetlać reklamy. Jeśli wyświetlasz banery reklamowe w ramach różnych działań, każdy z nich wymaga osobnej jednostki reklamowej.

Możesz też utworzyć plik AdView automatycznie:

Java

AdView adView = new AdView(this);

adView.setAdSize(AdSize.BANNER);

adView.setAdUnitId("ca-app-pub-3940256099942544/6300978111");
// TODO: Add adView to your view hierarchy.

Kotlin

val adView = AdView(this)

adView.adSize = AdSize.BANNER

adView.adUnitId = "ca-app-pub-3940256099942544/6300978111"
// TODO: Add adView to your view hierarchy.

Zawsze testuj z reklamami testowymi

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

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

ca-app-pub-3940256099942544/6300978111

Został on specjalnie skonfigurowany tak, aby zwracał reklamy testowe w odpowiedzi na każde żądanie. Możesz go używać w swoich aplikacjach podczas kodowania, testowania i debugowania. Pamiętaj tylko, 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.

Wczytaj reklamę

Po umieszczeniu tagu AdView kolejnym krokiem jest wczytanie reklamy. Należy to zrobić w metodzie loadAd() w klasie AdView. Wykorzystuje on parametr AdRequest, który przechowuje informacje o danym żądaniu reklamy w czasie działania, np. o kierowaniu.

Ten przykład pokazuje, jak wczytać reklamę w metodzie onCreate() obiektu Activity:

MainActivity (fragment)

Java

package ...

import ...
import com.google.android.gms.ads.AdRequest;
import com.google.android.gms.ads.AdView;

public class MainActivity extends AppCompatActivity {
    private AdView mAdView;

    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        MobileAds.initialize(this, new OnInitializationCompleteListener() {
            @Override
            public void onInitializationComplete(InitializationStatus initializationStatus) {
            }
        });

        mAdView = findViewById(R.id.adView);
        AdRequest adRequest = new AdRequest.Builder().build();
        mAdView.loadAd(adRequest);
    }
}

Kotlin

package ...

import ...
import com.google.android.gms.ads.AdRequest
import com.google.android.gms.ads.AdView

class MainActivity : AppCompatActivity() {

    lateinit var mAdView : AdView

    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        setContentView(R.layout.activity_main)

        MobileAds.initialize(this) {}

        mAdView = findViewById(R.id.adView)
        val adRequest = AdRequest.Builder().build()
        mAdView.loadAd(adRequest)
    }
}

Jeśli reklama się nie wczytuje, nie musisz prosić o żadną inną, 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ą wAdMob interfejsie internetowym. Jeśli nie masz włączonego odświeżania, musisz wysłać nowe żądanie.

Znakomicie. W Twojej aplikacji można już wyświetlać banery reklamowe.

Zdarzenia reklamowe

Aby jeszcze bardziej dostosować działanie reklamy, możesz uwzględnić szereg zdarzeń w jej cyklu życia: wczytywanie, otwieranie, zamykanie itd. Możesz nasłuchiwać tych zdarzeń za pomocą klasy AdListener.

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

Java

mAdView.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

mAdView.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 parametrze AdListener, odpowiada zdarzeniu w cyklu życia reklamy.

Metody, które można zastępować
onAdClicked() Metoda onAdClicked() jest wywoływana po zarejestrowaniu kliknięcia reklamy.
onAdClosed() Metoda onAdClosed() jest wywoływana, gdy użytkownik wróci do aplikacji po wyświetleniu docelowego adresu URL reklamy. Aplikacja może używać jej do wznawiania zawieszonych aktywności lub wykonywania innych czynności niezbędnych do przygotowania się do interakcji. Aby dowiedzieć się, jak wdrożyć metody detektora reklam w aplikacji demonstracyjnej Android API, zapoznaj się z przykładem AdMob AdListener.
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 reklam.
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ć dodanie elementu AdView do aktywności lub fragmentu do momentu, gdy na przykład reklama zostanie wczytana, możesz to zrobić tutaj.
onAdOpened() Metoda onAdOpened() jest wywoływana, gdy reklama otworzy nakładkę zasłaniającą ekran.

Rozmiar pojemnika, w którym umieszczasz reklamę, musi być co najmniej tak duży jak baner. Jeśli kontener ma dopełnienie, zmniejszy to jego rozmiar. Jeśli kontener nie mieści się do banera reklamowego, baner się nie wyświetli, a w dziennikach pojawi się to ostrzeżenie:

W/Ads: Not enough space to show ad. Needs 320x50 dp, but only has 288x495 dp.

Tabela poniżej zawiera standardowe rozmiary banerów.

Rozmiar w dp (szer. x wys.) Opis Dostępność Stała wartość AdSize
320x50 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 Tabela wyników IAB Tablety LEADERBOARD
Podana szerokość x Automatyczna wysokość Baner adaptacyjny Telefony i tablety Nie dotyczy
Szerokość ekranu x 32|50|90 Baner inteligentny Telefony i tablety SMART_BANNER

Aby zdefiniować niestandardowy rozmiar banera, ustaw wybrany parametr AdSize w następujący sposób:

Java

AdSize adSize = new AdSize(300, 50);

Kotlin

val adSize = AdSize(300, 50)

Akceleracja sprzętowa na potrzeby reklam wideo

Aby reklamy wideo wyświetlały się razem z banerami reklamowymi, musisz włączyć akcelerację sprzętową.

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

Włączam akcelerację sprzętową

Jeśli aplikacja nie działa prawidłowo, gdy akceleracja sprzętowa jest włączona globalnie, możesz ją kontrolować także w przypadku poszczególnych działań. Aby włączyć lub wyłączyć akcelerację sprzętową, możesz użyć atrybutu android:hardwareAccelerated dla elementów <application> i <activity> w AndroidManifest.xml. Ten przykład włącza akcelerację sprzętową w całej aplikacji, ale wyłącza ją dla 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 nie można włączyć akceleracji sprzętowej poszczególnych wyświetleń reklam, jeśli aktywność jest wyłączona, więc ta aktywność musi mieć włączoną akcelerację sprzętową.

Dodatkowe materiały

Przykłady w GitHubie

  • Przykład banerów reklamowych: Java | Kotlin

  • Prezentacja funkcji zaawansowanych: Java | Kotlin

  • Przykładowa aplikacja Banner RecyclerView: Java

Samouczki wideo w garażu reklam mobilnych

Historie sukcesu

Dalsze kroki

Zapoznaj się z tymi tematami: