Reklamy natywne

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

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() ani loadAds() na urządzeniu AdLoader, 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.