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
- Wykonaj czynności opisane w przewodniku dla początkujących.
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.
|
Rozmiary banerów
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ładowa aplikacja Banner RecyclerView: Java
Samouczki wideo w garażu reklam mobilnych
Historie sukcesu
Dalsze kroki
Zapoznaj się z tymi tematami: