Reklamy natywne to zasoby reklam, które są wyświetlane użytkownikom za pomocą natywnych elementów platformy. Wyświetlają się w tych samych typach widoków, nad którymi masz już układy, i można je formatować, aby pasowały do wyglądu aplikacji.
Po załadowaniu reklamy natywnej aplikacja otrzymuje obiekt reklamy zawierający jej zasoby, a za wyświetlanie jej odpowiada aplikacja (a nie pakiet SDK do reklam mobilnych Google).
Ogólnie rzecz biorąc, skuteczne reklamy natywne składają się z 2 etapów: wczytania reklamy za pomocą pakietu SDK i wyświetlenia treści w aplikacji.
Z tego artykułu dowiesz się, jak używać pakietu SDK do wczytywania reklam natywnych.
Wymagania wstępne
- Przeczytaj wprowadzenie.
Zawsze używaj reklam testowych
Tworząc i testując aplikacje, korzystaj z reklam testowych, a nie z aktywnych reklam produkcyjnych.
Najłatwiejszym sposobem wczytywania reklam testowych jest użycie specjalnego identyfikatora jednostki reklamowej na potrzeby reklam natywnych na Androida.
ca-app-pub-3940256099942544/2247696110
Został tak skonfigurowany pod kątem zwracania reklam testowych dla każdego żądania i 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 tym, jak działają reklamy testowe pakietu SDK do reklam mobilnych Google, znajdziesz w artykule Reklamy testowe.
Wczytuję reklamy
Reklamy natywne są ładowane przez klasę AdLoader
, która ma własną klasę Builder
, aby dostosować ją podczas tworzenia. Dzięki dodaniu detektorów do metody AdLoader
podczas tworzenia aplikacji aplikacja określa, jakie typy reklam natywnych jest gotowa do odbioru. Następnie AdLoader
wysyła żądanie tylko do tych typów.
Tworzenie modułu AdLoader
Ten kod pokazuje, jak utworzyć AdLoader
, który może wczytywać reklamy natywne:
Java
AdLoader adLoader = new AdLoader.Builder(context, "ca-app-pub-3940256099942544/2247696110")
.forNativeAd(new NativeAd.OnNativeAdLoadedListener() {
@Override
public void onNativeAdLoaded(NativeAd nativeAd) {
// Show the ad.
}
})
.withAdListener(new AdListener() {
@Override
public void onAdFailedToLoad(LoadAdError adError) {
// Handle the failure by logging, altering the UI, and so on.
}
})
.withNativeAdOptions(new NativeAdOptions.Builder()
// Methods in the NativeAdOptions.Builder class can be
// used here to specify individual options settings.
.build())
.build();
Kotlin
val adLoader = AdLoader.Builder(this, "ca-app-pub-3940256099942544/2247696110")
.forNativeAd { ad : NativeAd ->
// Show the ad.
}
.withAdListener(object : AdListener() {
override fun onAdFailedToLoad(adError: LoadAdError) {
// Handle the failure by logging, altering the UI, and so on.
}
})
.withNativeAdOptions(NativeAdOptions.Builder()
// Methods in the NativeAdOptions.Builder class can be
// used here to specify individual options settings.
.build())
.build()
Metoda forNativeAd()
jest odpowiedzialna za przygotowanie elementu AdLoader
na potrzeby formatu NativeAd
.
Gdy reklama się załaduje, wywołana jest metoda onNativeAdLoaded()
obiektu nasłuchującego.
Konfigurowanie AdListenera za pomocą AdLoader (opcjonalnie)
Podczas tworzenia obiektu AdLoader
funkcja withAdListener
ustawia AdListener
dla programu wczytującego. Ta metoda pobiera AdListener
jako jedyny parametr, który otrzymuje wywołania zwrotne z AdLoader
po wystąpieniu zdarzeń cyklu życia reklamy:
Java
.withAdListener(new AdListener() {
// AdListener callbacks can be overridden here.
})
Kotlin
.withAdListener(object : AdListener() {
// AdListener callbacks can be overridden here.
})
Wyślij żądanie
Po utworzeniu zdarzenia AdLoader
możesz go użyć do żądania reklam.
Dostępne są 2 metody: loadAd()
i loadAds()
.
loadAd()
Ta metoda wysyła żądanie pojedynczej reklamy.
Java
adLoader.loadAd(new AdRequest.Builder().build());
Kotlin
adLoader.loadAd(AdRequest.Builder().build())
loadAds()
Ta metoda wysyła żądanie wielu reklam (maksymalnie 5):
Java
adLoader.loadAds(new AdRequest.Builder().build(), 3);
Kotlin
adLoader.loadAds(AdRequest.Builder().build(), 3)
Obie metody pobierają obiekt AdRequest
jako pierwszy parametr. To ta sama klasa AdRequest
, która jest używana w banerach i reklamach pełnoekranowych. Metody klasy AdRequest
umożliwiają dodawanie informacji o kierowaniu, podobnie jak w przypadku innych formatów reklam.
Wczytaj wiele reklam (opcjonalnie)
Metoda loadAds()
pobiera dodatkowy parametr: liczbę reklam, które SDK powinien próbować wczytać z żądania. Ta wartość jest ograniczona do pięciu. Nie ma gwarancji, że pakiet SDK zwróci dokładną liczbę żądanych reklam.
Zwrócone reklamy Google różnią się od siebie, jednak reklamy pochodzące z zarezerwowanych zasobów reklamowych lub od zewnętrznych kupujących nie są unikalne.
Nie używaj metody loadAds()
, jeśli korzystasz z zapośredniczenia, ponieważ żądania wielu reklam natywnych nie działają obecnie dla identyfikatorów jednostek reklamowych skonfigurowanych na potrzeby zapośredniczenia.
Wywołania zwrotne
Po wywołaniu loadAd()
następuje wywołanie zwrotne do zdefiniowanych wcześniej metod słuchaczy, aby wyświetlić obiekt reklamy natywnej lub zgłosić błąd.
Po wywołaniu loadAds()
następuje kilka takich wywołań zwrotnych (co najmniej jedno, ale nie więcej niż żądana liczba reklam). Aplikacje żądające wielu reklam powinny wywoływać metodę AdLoader.isLoading()
w implementacji wywołania zwrotnego, aby ustalić, czy proces wczytywania się zakończył.
Ten przykład pokazuje, jak sprawdzić pole isLoading()
w wywołaniu zwrotnym onNativeAdLoaded()
:
Java
final AdLoader adLoader = new AdLoader.Builder(this, "ca-app-pub-3940256099942544/2247696110")
.forNativeAd(new NativeAd.OnNativeAdLoadedListener() {
@Override
public void onNativeAdLoaded(NativeAd nativeAd) {
...
// some code that displays the ad.
...
if (adLoader.isLoading()) {
// The AdLoader is still loading ads.
// Expect more adLoaded or onAdFailedToLoad callbacks.
} else {
// The AdLoader has finished loading ads.
}
}
}).build();
adLoader.loadAds(new AdRequest.Builder().build(), 3);
Kotlin
lateinit var adLoader: AdLoader
...
adLoader = AdLoader.Builder(this, "ca-app-pub-3940256099942544/2247696110")
.forNativeAd {
...
// some code that displays the ad.
...
if (adLoader.isLoading) {
// The AdLoader is still loading ads.
// Expect more adLoaded or onAdFailedToLoad callbacks.
} else {
// The AdLoader has finished loading ads.
}
}.build()
adLoader.loadAds(AdRequest.Builder().build(), 3)
Zwolnij zasoby
Pamiętaj, aby użyć metody destroy()
w załadowanych reklamach natywnych. Powoduje to wykorzystanie zasobów i zapobiega wyciekom pamięci.
Dopilnuj, aby wszystkie odniesienia do NativeAd
zostały zniszczone w metodzie onDestroy()
Twojej aktywności.
W wywołaniu zwrotnym onNativeAdLoaded
musisz usunąć wszystkie reklamy natywne, do których dostęp zostanie usunięty.
Innym kluczowym wskaźnikiem jest to, czy aktywność została zniszczona. Jeśli tak jest, wywołaj destroy()
w zwróconej reklamie i natychmiast wróć:
Java
final AdLoader adLoader = new AdLoader.Builder(this, "ca-app-pub-3940256099942544/2247696110")
.forNativeAd(new NativeAd.OnNativeAdLoadedListener() {
@Override
public void onNativeAdLoaded(NativeAd nativeAd) {
// If this callback occurs after the activity is destroyed, you
// must call destroy and return or you may get a memory leak.
// Note `isDestroyed()` is a method on Activity.
if (isDestroyed()) {
nativeAd.destroy();
return;
}
...
}
}).build();
Kotlin
lateinit var adLoader: AdLoader
...
adLoader = AdLoader.Builder(this, "ca-app-pub-3940256099942544/2247696110")
.forNativeAd { nativeAd ->
// If this callback occurs after the activity is destroyed, you
// must call destroy and return or you may get a memory leak.
// Note `isDestroyed` is a method on Activity.
if (isDestroyed) {
nativeAd.destroy()
return@forNativeAd
}
...
}.build()
Sprawdzone metody
Przestrzegaj tych reguł podczas wczytywania reklam.
Aplikacje, które używają reklam natywnych z listy, powinny zapisać ją w pamięci podręcznej.
Przy buforowaniu reklam wyczyść pamięć podręczną i załaduj ponownie stronę po upływie godziny.
Nie wywoływaj funkcji
loadAd()
aniloadAds()
na urządzeniuAdLoader
, dopóki nie zakończy się wczytywanie pierwszego żądania.
Wzmocnienie sprzętowe reklam wideo
Aby reklamy wideo mogły się wyświetlać w widokach reklam natywnych, musisz włączyć akcelerację sprzętową.
Akceleracja sprzętowa jest domyślnie włączona, ale niektóre aplikacje mogą ją wyłączyć. Jeśli ma to zastosowanie w Twojej aplikacji, zalecamy włączenie akceleracji sprzętowej w przypadku zajęć związanych z reklamami, które korzystają z reklam.
Włącz akcelerację sprzętową
Jeśli globalna akceleracja sprzętowa działa nieprawidłowo, możesz ją też kontrolować w przypadku poszczególnych aktywności. Aby włączyć lub wyłączyć akcelerację sprzętową, użyj atrybutu android:hardwareAccelerated
w elementach <application>
i <activity>
w AndroidManifest.xml
. Ten przykład włącza akcelerację sprzętową w całej aplikacji, ale wyłącza ją w przypadku 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>
Zobacz przewodnik dotyczący akceleracji sprzętowej, aby dowiedzieć się więcej o opcjach sterowania akceleracją sprzętową. Pamiętaj, że nie można włączyć akceleracji sprzętowej w przypadku poszczególnych wyświetleń reklam, więc aktywność musi mieć włączoną akcelerację sprzętową.
Wyświetlanie reklamy
Po wczytaniu reklamy pozostaje ją wyświetlać użytkownikom. Zapoznaj się z naszym przewodnikiem dla zaawansowanych użytkowników reklam natywnych.