Podziel się opinią i pomóż nam opracować harmonogram rozwoju pakietu SDK do reklam mobilnych Google. Wypełnij roczną ankietę dotyczącą pakietu SDK do reklam mobilnych Google na 2023 r., aby została zakończona 5 maja 2023 roku.

Banery reklamowe

Zadbaj o dobrą organizację dzięki kolekcji Zapisuj i kategoryzuj treści zgodnie ze swoimi preferencjami.

Banery reklamowe zajmują miejsce w układzie aplikacji, u góry lub u dołu ekranu urządzenia. Pozostają na ekranie, gdy użytkownicy wchodzą w interakcję z aplikacją, i po określonym czasie mogą się automatycznie odświeżać. Jeśli dopiero zaczynasz korzystać z reklam mobilnych, warto zacząć od tego. Studium przypadku.

Z tego przewodnika dowiesz się, jak zintegrować banery reklamowe z aplikacjiAdMob z aplikacją na Androida. Znajdziesz w niej też fragmenty kodu i instrukcje dotyczące prawidłowego rozmiaru banerów oraz linki do dodatkowych materiałów.

Wymagania wstępne

Dodaj 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ć. Najłatwiej zrobić to, dodając taki element do odpowiedniego pliku układu XML. Oto przykład działania AdView:

# 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 atrybuty wymagane:

  • ads:adSize – ustaw ten rozmiar reklamy, którego chcesz użyć. Jeśli nie chcesz używać rozmiaru standardowego zdefiniowanego przez stałą, możesz ustawić rozmiar niestandardowy. Szczegółowe informacje znajdziesz poniżej w sekcji dotyczącej rozmiaru banerów.
  • ads:adUnitId – ustaw unikalny identyfikator nadawany jednostce reklamowej w aplikacji, w której mają się wyświetlać reklamy. Jeśli wyświetlasz banery reklamowe przy różnych działaniach, każda z nich będzie wymagała jednostki reklamowej.

Możesz też utworzyć 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 korzystaj z reklam testowych

Tworząc i testując aplikacje, korzystaj z reklam testowych, a nie z aktywnych reklam produkcyjnych. Jeśli tego nie zrobisz, możemy zawiesić Twoje konto.

Najłatwiejszym sposobem wczytywania reklam testowych jest użycie specjalnego identyfikatora testowej jednostki reklamowej na banery Androida.

ca-app-pub-3940256099942544/6300978111

Został on tak skonfigurowany, by zwracać reklamy testowe dla każdego żądania, i można używać go we własnych aplikacjach w zakresie kodowania, testowania i debugowania. Pamiętaj tylko, aby przed opublikowaniem aplikacji zastąpić go własnym identyfikatorem jednostki reklamowej.

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

Wczytywanie reklamy

Gdy reklamy się wyświetlą AdView , kolejnym krokiem jest wczytanie reklamy. Aby to zrobić, użyj metody loadAd() w klasie AdView. Przyjmuje parametr AdRequest, który zawiera informacje o czasie działania (np. informacje o kierowaniu) dotyczące pojedynczego żądania reklamy.

Oto przykład, który pokazuje, jak wczytać reklamę przy użyciu metody onCreate() w 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)
    }
}

Znakomicie. Aplikacja jest gotowa do wyświetlania banerów reklamowych.

Zdarzenia reklamowe

Aby jeszcze bardziej dostosować działanie reklamy, możesz przechwycić różne zdarzenia w jej cyklu życia: wczytanie, otwarcie, zamknięcie itd. Możesz słuchać tych zdarzeń za pomocą klasy AdListener.

Aby użyć metody 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 możliwych do zastąpienia metod w 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 obejrzeniu docelowego adresu URL reklamy. Aplikacja może go wykorzystać do wznowienia zawieszonych aktywności lub wykonywania innych działań, które przygotują się do interakcji. Więcej informacji o implementacji metod detektora reklam w aplikacji demonstracyjnej na Androida API znajdziesz w przykładzie AdMob AdListener.
onAdFailedToLoad() Metoda onAdFailedToLoad() jako jedyna zawiera parametr. Parametr błędu typu LoadAdError opisuje błąd. Więcej informacji znajdziesz w dokumentacji błędów debugowania reklam.
onAdImpression() Metoda onAdImpression() jest wywoływana po zarejestrowaniu wyświetlenia reklamy.
onAdLoaded() Metoda onAdLoaded() jest uruchamiana po zakończeniu wczytywania reklamy. Jeśli chcesz opóźnić dodanie 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 się w nakładce pokrywającej ekran.

Tabela poniżej zawiera standardowe rozmiary banerów.

Rozmiar w dp (szer.xwys.) Opis Dostępność Stała AdSize
320 x 50 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 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 mają zastąpić banery inteligentne.

Aby zdefiniować niestandardowy rozmiar banera, ustaw odpowiedni AdSize w ten sposób:

Java

AdSize adSize = new AdSize(300, 50);

Kotlin

val adSize = AdSize(300, 50)

Akceleracja sprzętowa w reklamach wideo

Aby reklamy wideo wyświetlały się prawidłowo w widokach banerów reklamowych, 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 w przypadku klas aktywności, które korzystają z reklam.

Włączanie akceleracji sprzętowej

Jeśli aplikacja działa nieprawidłowo, gdy włączona jest globalna akceleracja sprzętowa, możesz ją sterować również w przypadku poszczególnych aktywności. Aby włączyć lub wyłączyć akcelerację sprzętową, możesz użyć atrybutu android:hardwareAccelerated w przypadku elementów <application> i <activity> w AndroidManifest.xml. Ten przykład włącza akcelerację sprzętową w całej aplikacji, ale wyłącza ją w jednej aktywności:

<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 akceleracji sprzętowej znajdziesz w przewodniku po akceleracji sprzętowej. Pamiętaj, że nie można włączyć poszczególnych widoków reklam dla akceleracji sprzętowej, jeśli Aktywność jest wyłączona, dlatego sama aktywność musi mieć włączoną akcelerację sprzętową.

Dodatkowe materiały

Przykłady w GitHubie

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

  • Wersja demonstracyjna funkcji zaawansowanych: Java | Kotlin

  • Przykładowa aplikacja ReBannerrView: Java

Samouczki wideo dotyczące reklam mobilnych w garażu

Historie sukcesu