Reklamy natywne to komponenty reklamowe, które są wyświetlane użytkownikom za pomocą komponentów interfejsu użytkownika dostępnych na danej platformie. Są one wyświetlane za pomocą tych samych typów widoków, których używasz do tworzenia układów, i można je sformatować tak, aby pasowały do projektu graficznego aplikacji.
Gdy wczytuje się reklama natywna, aplikacja otrzymuje obiekt reklamy zawierający jej komponenty. Za wyświetlanie reklamy odpowiada aplikacja, a nie pakiet SDK do reklam mobilnych Google.
Ogólnie rzecz biorąc, wdrożenie reklam natywnych składa się z 2 części: wczytywania reklamy za pomocą pakietu SDK i wyświetlania treści reklamy w aplikacji.
Na tej stronie znajdziesz instrukcje korzystania z pakietu SDK do wczytywania reklam natywnych.
Wymagania wstępne
- Zapoznaj się z przewodnikiem dla początkujących.
Zawsze testuj reklamy za pomocą reklam testowych
Podczas tworzenia i testowania aplikacji używaj reklam testowych, a nie reklam produkcyjnych.
Najłatwiej wczytać reklamy testowe, używając dedykowanego identyfikatora testowej jednostki reklamowej na potrzeby reklam natywnych na Androidzie:
/21775744923/example/native
Jest on specjalnie skonfigurowany tak, aby zwracać reklamy testowe w przypadku każdego żądania. 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 działaniu reklam testowych w pakiecie SDK do reklam mobilnych Google znajdziesz w artykule Reklamy testowe.
Wczytywanie reklam
Reklamy natywne są wczytywane za pomocą klasy AdLoader
, która ma własną klasę Builder
, dzięki której możesz ją dostosować podczas tworzenia. Dodając do AdLoader
odbiorców podczas tworzenia, aplikacja określa, jakie typy reklam natywnych jest gotowa wyświetlać. Następnie AdLoader
prosi tylko o te typy.
Tworzenie AdLoader
Poniższy kod pokazuje, jak utworzyć element AdLoader
, który może wczytywać reklamy natywne:
Java
AdLoader adLoader = new AdLoader.Builder(context, "/21775744923/example/native")
.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, "/21775744923/example/native}")
.forNativeAd { ad : NativeAd ->
// Show the ad.
}
.withAdListener(object : AdListener() {
override fun onAdFailedToLoad(adError: LoadAdError) {
// Handle the failure.
}
})
.withNativeAdOptions(NativeAdOptions.Builder()
// Methods in the NativeAdOptions.Builder class can be
// used here to specify individual options settings.
.build())
.build()
Metoda forNativeAd()
odpowiada za przygotowanie danych AdLoader
do zapisania w formacie NativeAd
.
Gdy reklama zostanie wczytana, wywoływana jest metoda onNativeAdLoaded()
obiektu listenera.
Konfigurowanie obiektu AdListener za pomocą klasy AdLoader (opcjonalnie)
Podczas tworzenia AdLoader
funkcja withAdListener
ustawia parametr AdListener
dla ładowarki. Metoda przyjmuje jako jedyny parametr obiekt AdListener
, który odbiera wywołania zwrotne z obiektu AdLoader
, gdy występują zdarzenia 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
Gdy skończysz tworzyć AdLoader
, możesz użyć go do żądania reklam.
Użyj metody loadAd()
, która jako pierwszy parametr przyjmuje obiekt AdManagerAdRequest
. Jest to ta sama klasa AdManagerAdRequest
, która jest używana w przypadku banerów i reklam przejściowych. Możesz używać metod klasy AdManagerAdRequest
, aby dodawać informacje kierowania, tak jak w przypadku innych formatów reklam.
loadAd()
Ta metoda wysyła żądanie jednej reklamy.
Java
adLoader.loadAd(new AdManagerAdRequest.Builder().build());
Kotlin
adLoader.loadAd(AdManagerAdRequest.Builder().build())
Wywołania zwrotne
Po wywołaniu metody loadAd()
uruchamiana jest 1 metoda wywołania zwrotnego zdefiniowana wcześniej w metodach listenera, aby przesłać obiekt reklamy natywnej lub zgłosić błąd.
Zwolnij zasoby
Pamiętaj, aby w załadowanych reklamach natywnych używać metody destroy()
. Pozwala to zwolnić wykorzystywane zasoby i zapobiegać wyciekom pamięci.
Upewnij się, że wszystkie odwołania do NativeAd
są niszczone w metodie onDestroy()
aktywności.
W funkcji onNativeAdLoaded
callback usuń wszystkie istniejące reklamy natywne, które zostaną odwoływane.
Kolejną ważną rzeczą jest sprawdzenie, czy aktywność została zniszczona. Jeśli tak, wywołaj funkcję destroy()
w zwróconej reklamie i zwracaj natychmiast:
Java
final AdLoader adLoader = new AdLoader.Builder(this, "/21775744923/example/native")
.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, "/21775744923/example/native")
.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
Podczas wczytywania reklam przestrzegaj tych zasad.
Aplikacje, które używają na liście reklam natywnych, powinny z wyprzedzeniem przechowywać w pamięci podręcznej listę reklam.
Podczas wstępnego buforowania reklam wyczyść pamięć podręczną i ponownie załaduj reklamy po upływie godziny.
Nie wywołuj funkcji
loadAd()
w obiekcieAdLoader
, dopóki pierwsze żądanie nie zostanie załadowane.Ogranicz buforowanie reklam natywnych tylko do tego, co jest potrzebne. Na przykład podczas wstępnego buforowania przechowuj w pamięci podręcznej tylko reklamy, które są widoczne na ekranie. Reklamy natywne zajmują dużo pamięci, a ich buforowanie bez ich niszczenia powoduje nadmierne wykorzystanie pamięci.
usuwać reklamy natywne, gdy nie są już używane.
Sprzętowa akceleracja reklam wideo
Aby reklamy wideo wyświetlały się w natywnym widoku reklamy, musisz włączyć przyspieszenie sprzętowe.
Przyspieszenie sprzętowe jest domyślnie włączone, ale niektóre aplikacje mogą je wyłączyć. Jeśli dotyczy to Twojej aplikacji, zalecamy włączenie akceleracji sprzętowej dla klas aktywności, które korzystają z reklam.
Włączanie akceleracji sprzętowej
Jeśli aplikacja nie działa prawidłowo, gdy akceleracja sprzętowa jest włączona globalnie, możesz kontrolować ją również w przypadku poszczególnych działań. Aby włączyć lub wyłączyć akcelerację sprzętową, użyj atrybutu android:hardwareAccelerated
w elementach <application>
i <activity>
w pliku AndroidManifest.xml
. W tym przykładzie przyspieszenie sprzętowe jest włączone w przypadku całej aplikacji, ale wyłączone 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>
Więcej informacji o opcjach sterowania akceleracją sprzętową znajdziesz w przewodniku na ten temat. Pamiętaj, że jeśli aktywność jest wyłączona, nie można włączyć akceleracji sprzętowej dla poszczególnych wyświetleń reklam. Akceleracja sprzętowa musi być włączona w ramach samej aktywności.
Wyświetlanie reklamy
Po załadowaniu reklamy pozostaje tylko wyświetlić ją użytkownikom. Aby dowiedzieć się, jak to zrobić, zapoznaj się z przewodnikiem dotyczącym zaawansowanych funkcji natywnych.