Reklamy natywne

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

Reklamy natywne to zasoby reklam wyświetlane użytkownikom za pomocą komponentów interfejsu natywnych na platformie. Są wyświetlane w tych samych widokach, w których tworzysz już układy, i mogą być sformatowane pod kątem wyglądu i sposobu obsługi interfejsu. Zgodnie z zasadami kodowania po załadowaniu reklamy natywnej aplikacja otrzymuje obiekt NativeAd zawierający swoje zasoby, a za wyświetlanie reklam 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. Ta strona dotyczy używania pakietu SDK do wczytywania reklam natywnych.

Wymagania wstępne

Wczytywanie reklamy

Reklamy natywne są wczytywane za pomocą klasy AdLoader, która ma własną klasę Builder, aby dostosować ją podczas tworzenia. Dodając detektory do AdLoader podczas tworzenia, aplikacja określa typy reklam natywnych, które są gotowe do odbioru. Następnie AdLoader żąda tylko tych typów.

Tworzenie elementu 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()

Przygotowanie do formatu reklam natywnych

Pierwsza metoda odpowiada za przygotowanie AdLoader do formatu reklamy natywnej:

forNativeAd()
Wywoływanie tej metody powoduje skonfigurowanie w żądaniu reklamy AdLoader żądania reklam natywnych. Po załadowaniu reklamy wywoływane jest obiekt detektora onNativeAdLoaded().

Gdy AdLoader wysyła żądanie reklamy, Google wybiera i zwraca reklamę, która maksymalizuje zysk wydawcy.

Używanie AdListenera z narzędziem AdLoader

Podczas tworzenia powyższego obiektu AdLoader funkcja withAdListener ustawia AdListener.

Jest to krok opcjonalny. Ta metoda przyjmuje AdListener jako jedyny parametr, który otrzymuje wywołania zwrotne z zdarzenia AdLoader cyklu życia reklamy:

Java

.withAdListener(new AdListener() {
    // AdListener callbacks can be overridden here.
})

Kotlin

.withAdListener(object : AdListener() {
    // AdListener callbacks can be overridden here.
})

Wczytuję reklamy

Po zakończeniu tworzenia tagu AdLoader czas użyć go do załadowania reklam. Dostępne są 2 metody: loadAd() i loadAds().

Metoda loadAd() wysyła żądanie pojedynczej reklamy:

loadAd()
Ta metoda wysyła żądanie pojedynczej reklamy.

Java

adLoader.loadAd(new AdRequest.Builder().build());

Kotlin

adLoader.loadAd(AdRequest.Builder().build())

Metoda loadAds() wysyła żądanie wielu reklam (maksymalnie 5):

Java

adLoader.loadAds(new AdRequest.Builder().build(), 3);

Kotlin

adLoader.loadAds(AdRequest.Builder().build(), 3)

Obie te metody zajmują obiekt AdRequest jako pierwszy parametr. Jest to ta sama klasa AdRequest, co w przypadku banerów i reklam pełnoekranowych. Za pomocą metod AdRequest możesz dodawać informacje o kierowaniu tak samo jak w przypadku innych formatów reklam.

loadAds() pobiera dodatkowy parametr: liczbę reklam, które pakiet SDK powinien próbować wczytać dla żądania. Ta liczba jest ograniczona do maksymalnie 5 i nie gwarantuje, że pakiet SDK zwróci dokładną liczbę żądanych reklam. Jeśli wywołanie loadAds() spowoduje wyświetlenie wielu reklam, będą się one różnić od siebie.

Po wywołaniu loadAd() zostanie wysłane jedno wywołanie zwrotne do metod detektora zdefiniowanych powyżej w celu wyświetlenia obiektu reklamy natywnej lub zgłoszenia błędu.

Po połączeniu z numerem loadAds() zostanie wykonanych wiele wywołań zwrotnych (co najmniej 1, a liczba reklam nie może być większa). Aplikacje żądające wielu reklam powinny wywoływać metodę AdLoader.isLoading() w implementacjach wywołania zwrotnego, aby ustalić, czy proces wczytywania się zakończył.

Oto przykład sprawdzania właściwości 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)

Czyszczenie

Pamiętaj, aby użyć metody destroy() w załadowanych reklamach natywnych. Dzięki temu zwolnisz wykorzystanie zasobów i zapobiegnie wyciekom pamięci.

Upewnij się, że wszystkie odwołania do NativeAd zostały zniszczone w metodzie onDestroy().

W wywołaniu zwrotnym onNativeAdLoaded zniszcz wszystkie istniejące reklamy natywne, które zostaną unieważnione.

Inną kluczową metodą jest sprawdzenie, czy aktywność została zniszczona, a jeśli tak, wywołaj destroy() w zwróconej reklamie i zwróć natychmiast:

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()

Zawsze testuj z reklamami testowymi

Tworząc i testując aplikacje, upewnij się, że używasz reklam testowych zamiast produkcyjnych. Jeśli tego nie zrobisz, Twoje konto może zostać zawieszone.

Najłatwiejszym sposobem wczytywania reklam testowych jest użycie specjalnego identyfikatora testowego jednostki reklamowej na potrzeby zaawansowanych reklam natywnych na Androida:

ca-app-pub-3940256099942544/2247696110

Został on specjalnie skonfigurowany pod kątem zwracania reklam testowych dla każdego żądania. Możesz używać go we własnych 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 pakietu SDK do reklam mobilnych znajdziesz w artykule Test Ads (Reklamy testowe).

Kiedy należy wysyłać reklamy

Aplikacje, w których wyświetlane są reklamy natywne, mogą być wysyłane do użytkowników z wyprzedzeniem dopiero wtedy, gdy zostaną faktycznie wyświetlone. W wielu przypadkach jest to zalecane. Na przykład aplikacja z listą elementów z reklamami natywnymi może wczytywać całą reklamę, wiedząc, że niektóre będą wyświetlane dopiero po przewinięciu widoku przez użytkownika, a niektóre w ogóle nie będą wyświetlane.

Akceleracja sprzętowa na potrzeby reklam wideo

Aby reklamy wideo wyświetlały się w reklamach 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 dotyczy to Twojej aplikacji, zalecamy włączenie akceleracji sprzętowej w przypadku zajęć korzystających z reklam.

Włączanie akceleracji sprzętowej

Jeśli aplikacja działa nieprawidłowo, gdy włączona jest akceleracja sprzętowa na całym świecie, możesz ją kontrolować również w przypadku poszczególnych aktywności. Aby włączyć lub wyłączyć akcelerację sprzętową, możesz użyć atrybutu android:hardwareAccelerated elementów <application> i <activity> w AndroidManifest.xml. Ten przykład włącza akcelerację sprzętową dla całej aplikacji, ale wyłącza ją dla 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. Widoków reklam nie można włączyć w przypadku akceleracji sprzętowej, jeśli jest ona wyłączona, więc sama aktywność musi mieć włączoną akcelerację sprzętową.

Wyświetlanie reklamy natywnej

Po wczytaniu reklamy wystarczy ją wyświetlić użytkownikom. Informacje na ten temat znajdziesz w przewodniku dla zaawansowanych użytkowników reklam natywnych.

,

Reklamy natywne to zasoby reklam wyświetlane użytkownikom za pomocą komponentów interfejsu natywnych na platformie. Są wyświetlane w tych samych widokach, w których tworzysz już układy, i mogą być sformatowane pod kątem wyglądu i sposobu obsługi interfejsu. Zgodnie z zasadami kodowania po załadowaniu reklamy natywnej aplikacja otrzymuje obiekt NativeAd zawierający swoje zasoby, a za wyświetlanie reklam 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. Ta strona dotyczy używania pakietu SDK do wczytywania reklam natywnych.

Wymagania wstępne

Wczytywanie reklamy

Reklamy natywne są wczytywane za pomocą klasy AdLoader, która ma własną klasę Builder, aby dostosować ją podczas tworzenia. Dodając detektory do AdLoader podczas tworzenia, aplikacja określa typy reklam natywnych, które są gotowe do odbioru. Następnie AdLoader żąda tylko tych typów.

Tworzenie elementu 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()

Przygotowanie do formatu reklam natywnych

Pierwsza metoda odpowiada za przygotowanie AdLoader do formatu reklamy natywnej:

forNativeAd()
Wywoływanie tej metody powoduje skonfigurowanie w żądaniu reklamy AdLoader żądania reklam natywnych. Po załadowaniu reklamy wywoływane jest obiekt detektora onNativeAdLoaded().

Gdy AdLoader wysyła żądanie reklamy, Google wybiera i zwraca reklamę, która maksymalizuje zysk wydawcy.

Używanie AdListenera z narzędziem AdLoader

Podczas tworzenia powyższego obiektu AdLoader funkcja withAdListener ustawia AdListener.

Jest to krok opcjonalny. Ta metoda przyjmuje AdListener jako jedyny parametr, który otrzymuje wywołania zwrotne z zdarzenia AdLoader cyklu życia reklamy:

Java

.withAdListener(new AdListener() {
    // AdListener callbacks can be overridden here.
})

Kotlin

.withAdListener(object : AdListener() {
    // AdListener callbacks can be overridden here.
})

Wczytuję reklamy

Po zakończeniu tworzenia tagu AdLoader czas użyć go do załadowania reklam. Dostępne są 2 metody: loadAd() i loadAds().

Metoda loadAd() wysyła żądanie pojedynczej reklamy:

loadAd()
Ta metoda wysyła żądanie pojedynczej reklamy.

Java

adLoader.loadAd(new AdRequest.Builder().build());

Kotlin

adLoader.loadAd(AdRequest.Builder().build())

Metoda loadAds() wysyła żądanie wielu reklam (maksymalnie 5):

Java

adLoader.loadAds(new AdRequest.Builder().build(), 3);

Kotlin

adLoader.loadAds(AdRequest.Builder().build(), 3)

Obie te metody zajmują obiekt AdRequest jako pierwszy parametr. Jest to ta sama klasa AdRequest, co w przypadku banerów i reklam pełnoekranowych. Za pomocą metod AdRequest możesz dodawać informacje o kierowaniu tak samo jak w przypadku innych formatów reklam.

loadAds() pobiera dodatkowy parametr: liczbę reklam, które pakiet SDK powinien próbować wczytać dla żądania. Ta liczba jest ograniczona do maksymalnie 5 i nie gwarantuje, że pakiet SDK zwróci dokładną liczbę żądanych reklam. Jeśli wywołanie loadAds() spowoduje wyświetlenie wielu reklam, będą się one różnić od siebie.

Po wywołaniu loadAd() zostanie wysłane jedno wywołanie zwrotne do metod detektora zdefiniowanych powyżej w celu wyświetlenia obiektu reklamy natywnej lub zgłoszenia błędu.

Po połączeniu z numerem loadAds() zostanie wykonanych wiele wywołań zwrotnych (co najmniej 1, a liczba reklam nie może być większa). Aplikacje żądające wielu reklam powinny wywoływać metodę AdLoader.isLoading() w implementacjach wywołania zwrotnego, aby ustalić, czy proces wczytywania się zakończył.

Oto przykład sprawdzania właściwości 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)

Czyszczenie

Pamiętaj, aby użyć metody destroy() w załadowanych reklamach natywnych. Dzięki temu zwolnisz wykorzystanie zasobów i zapobiegnie wyciekom pamięci.

Upewnij się, że wszystkie odwołania do NativeAd zostały zniszczone w metodzie onDestroy().

W wywołaniu zwrotnym onNativeAdLoaded zniszcz wszystkie istniejące reklamy natywne, które zostaną unieważnione.

Inną kluczową metodą jest sprawdzenie, czy aktywność została zniszczona, a jeśli tak, wywołaj destroy() w zwróconej reklamie i zwróć natychmiast:

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()

Zawsze testuj z reklamami testowymi

Tworząc i testując aplikacje, upewnij się, że używasz reklam testowych zamiast produkcyjnych. Jeśli tego nie zrobisz, Twoje konto może zostać zawieszone.

Najłatwiejszym sposobem wczytywania reklam testowych jest użycie specjalnego identyfikatora testowego jednostki reklamowej na potrzeby zaawansowanych reklam natywnych na Androida:

ca-app-pub-3940256099942544/2247696110

Został on specjalnie skonfigurowany pod kątem zwracania reklam testowych dla każdego żądania. Możesz używać go we własnych 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 pakietu SDK do reklam mobilnych znajdziesz w artykule Test Ads (Reklamy testowe).

Kiedy należy wysyłać reklamy

Aplikacje, w których wyświetlane są reklamy natywne, mogą być wysyłane do użytkowników z wyprzedzeniem dopiero wtedy, gdy zostaną faktycznie wyświetlone. W wielu przypadkach jest to zalecane. Na przykład aplikacja z listą elementów z reklamami natywnymi może wczytywać całą reklamę, wiedząc, że niektóre będą wyświetlane dopiero po przewinięciu widoku przez użytkownika, a niektóre w ogóle nie będą wyświetlane.

Akceleracja sprzętowa na potrzeby reklam wideo

Aby reklamy wideo wyświetlały się w reklamach 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 dotyczy to Twojej aplikacji, zalecamy włączenie akceleracji sprzętowej w przypadku zajęć korzystających z reklam.

Włączanie akceleracji sprzętowej

Jeśli aplikacja działa nieprawidłowo, gdy włączona jest akceleracja sprzętowa na całym świecie, możesz ją kontrolować również w przypadku poszczególnych aktywności. Aby włączyć lub wyłączyć akcelerację sprzętową, możesz użyć atrybutu android:hardwareAccelerated elementów <application> i <activity> w AndroidManifest.xml. Ten przykład włącza akcelerację sprzętową dla całej aplikacji, ale wyłącza ją dla 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. Widoków reklam nie można włączyć w przypadku akceleracji sprzętowej, jeśli jest ona wyłączona, więc sama aktywność musi mieć włączoną akcelerację sprzętową.

Wyświetlanie reklamy natywnej

Po wczytaniu reklamy wystarczy ją wyświetlić użytkownikom. Informacje na ten temat znajdziesz w przewodniku dla zaawansowanych użytkowników reklam natywnych.