Reklamy natywne

Wybierz platformę: Android iOS Flutter Unity

Reklamy natywne to komponenty reklamowe wyświetlane użytkownikom za pomocą komponentów interfejsu, które są natywne dla platformy. Są one wyświetlane w tych samych typach widoków, w których tworzysz już układy, i można je formatować tak, aby pasowały do projektu graficznego aplikacji.

Gdy reklama natywna się wczyta, aplikacja otrzyma obiekt reklamy zawierający jej komponenty. Za wyświetlanie tych komponentów odpowiada aplikacja, a nie pakiet SDK do reklam mobilnych Google.

Wprowadzenie reklam natywnych składa się z 2 etapów: ładowania reklamy za pomocą pakietu SDK, a następnie wyświetlania treści reklamy w aplikacji.

Na tej stronie dowiesz się, jak używać pakietu SDK do wczytywania reklam natywnych. Wskazówka: więcej informacji o reklamach natywnych znajdziesz w naszym przewodniku po reklamach natywnych.

Możesz też zapoznać się z historiami sukcesu klientów: studium przypadku 1, studium przypadku 2.

Wymagania wstępne

Zawsze testuj za pomocą reklam testowych

Podczas tworzenia i testowania aplikacji używaj reklam testowych zamiast reklam produkcyjnych.

Najłatwiejszym sposobem wczytywania reklam testowych jest użycie specjalnego identyfikatora jednostki reklamowej testowej w przypadku reklam natywnych na Androidzie:

ca-app-pub-3940256099942544/2247696110

Został 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 tylko, 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 z klasą AdLoader, która ma własną klasę Builder do dostosowywania podczas tworzenia. Dodając do niego odbiorców podczas tworzenia, aplikacja określa, jakie typy reklam natywnych może otrzymywać.AdLoader AdLoader żąda tylko tych typów.

Tworzenie obiektu AdLoader

Poniższy kod pokazuje, jak utworzyć obiekt AdLoader, który może wczytywać reklamy natywne:

Java

// It is recommended to call AdLoader.Builder on a background thread.
new Thread(
        () -> {
          AdLoader adLoader =
              new AdLoader.Builder(context, "AD_UNIT_ID")
                  .forNativeAd(
                      new NativeAd.OnNativeAdLoadedListener() {
                        @Override
                        // The native ad loaded successfully. You can show the ad.
                        public void onNativeAdLoaded(@NonNull NativeAd nativeAd) {}
                      })
                  .withAdListener(
                      new AdListener() {
                        @Override
                        // The native ad load failed. Check the adError message for failure
                        // reasons.
                        public void onAdFailedToLoad(@NonNull LoadAdError adError) {}
                      })
                  // Use the NativeAdOptions.Builder class to specify individual options
                  // settings.
                  .withNativeAdOptions(new NativeAdOptions.Builder().build())
                  .build();
        })
    .start();

Kotlin

// It is recommended to call AdLoader.Builder on a background thread.
CoroutineScope(Dispatchers.IO).launch {
  val adLoader =
    AdLoader.Builder(context, "AD_UNIT_ID")
      .forNativeAd { nativeAd ->
        // The native ad loaded successfully. You can show the ad.
      }
      .withAdListener(
        object : AdListener() {
          override fun onAdFailedToLoad(adError: LoadAdError) {
            // The native ad load failed. Check the adError message for failure reasons.
          }
        }
      )
      // Use the NativeAdOptions.Builder class to specify individual options settings.
      .withNativeAdOptions(NativeAdOptions.Builder().build())
      .build()
}

Zastąp AD_UNIT_ID identyfikatorem urządzenia testowego.

Metoda forNativeAd() odpowiada za przygotowanie AdLoader do formatu NativeAd. Gdy reklama zostanie wczytana, wywoływana jest metoda onNativeAdLoaded() obiektu detektora.

Konfigurowanie AdListener za pomocą AdLoader (opcjonalnie)

Podczas tworzenia AdLoader funkcja withAdListener ustawia AdListener dla modułu wczytującego. Metoda przyjmuje jako jedyny parametr obiekt AdListener, który odbiera wywołania zwrotne z obiektu AdLoader, gdy występują zdarzenia cyklu życia reklamy:

Java

adLoaderBuilder.withAdListener(
    // Override AdListener callbacks here.
    new AdListener() {});

Kotlin

adLoaderBuilder.withAdListener(
  // Override AdListener callbacks here.
  object : AdListener() {}
)

Wyślij żądanie

Po utworzeniu AdLoader możesz użyć go do wysyłania żądań reklam. Możesz to zrobić na 2 sposoby: loadAd()loadAds().

loadAd()

Ta metoda wysyła żądanie jednej 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

// Load three native ads.
adLoader.loadAds(new AdRequest.Builder().build(), 3);

Kotlin

// Load three native ads.
adLoader.loadAds(AdRequest.Builder().build(), 3)

Obie metody przyjmują jako pierwszy parametr obiekt AdRequest. Jest to ta sama klasaAdRequest, której używają banery i reklamy pełnoekranowe.AdRequestMożesz używać metod klasy AdRequest, aby dodawać informacje o kierowaniu, tak jak w przypadku innych formatów reklam.

Wczytywanie wielu reklam (opcjonalnie)

Metoda loadAds() przyjmuje dodatkowy parametr: liczbę reklam, które pakiet SDK powinien spróbować wczytać w odpowiedzi na żądanie. Ta liczba jest ograniczona do 5 i nie ma gwarancji, że pakiet SDK zwróci dokładną liczbę żądanych reklam.

Zwrócone reklamy Google będą się od siebie różnić, ale nie ma gwarancji, że reklamy z zasobów zarezerwowanych lub od kupujących zewnętrznych będą unikalne.

Nie używaj metody loadAds(), jeśli korzystasz z zapośredniczenia, ponieważ żądania wielu reklam natywnych nie działają w przypadku identyfikatorów jednostek reklamowych skonfigurowanych pod kątem zapośredniczenia.

Wywołania zwrotne

Po wywołaniu funkcji loadAd() do wcześniej zdefiniowanych metod odbiornika jest wywoływane pojedyncze wywołanie zwrotne w celu dostarczenia obiektu reklamy natywnej lub zgłoszenia błędu.

Po wywołaniu funkcji loadAds() następuje wiele takich wywołań zwrotnych (co najmniej jedno, ale nie więcej niż liczba żądanych reklam). Aplikacje, które wysyłają prośby o wiele reklam, powinny wywoływać funkcję AdLoader.isLoading() w implementacjach wywołania zwrotnego, aby określić, czy proces wczytywania został zakończony.

Oto przykład sprawdzania wartości isLoading() w wywołaniu zwrotnym onNativeAdLoaded():

Java

adLoaderBuilder
    .forNativeAd(
        nativeAd -> {
          // This callback is invoked when a native ad is successfully loaded.
        })
    .build();

Kotlin

adLoaderBuilder
  .forNativeAd { nativeAd ->
    // This callback is invoked when a native ad is successfully loaded.
  }
  .build()

Zwalnianie zasobów

Pamiętaj, aby w przypadku wczytanych reklam natywnych używać metody destroy(). Zwalnia to wykorzystane zasoby i zapobiega wyciekom pamięci.

Sprawdź, czy wszystkie odwołania NativeAd są niszczone w metodzie onDestroy() aktywności.

onNativeAdLoadedwywołaniu zwrotnym usuń wszystkie istniejące reklamy natywne, do których odwołania zostaną usunięte.

Kolejnym kluczowym sprawdzeniem jest to, czy aktywność została zniszczona. Jeśli tak, wywołaj destroy() w przypadku zwróconej reklamy i natychmiast zwróć wartość:

Java

nativeAd.destroy();

Kotlin

nativeAd.destroy()

Sprawdzone metody

Podczas wczytywania reklam przestrzegaj tych reguł.

  • Aplikacje, które używają reklam natywnych na liście, powinny wstępnie buforować listę reklam.

  • Podczas wstępnego buforowania reklam wyczyść pamięć podręczną i ponownie załaduj stronę po godzinie.

  • Nie wywołuj funkcji loadAd() ani loadAds() na obiekcie AdLoader, dopóki nie zakończy się ładowanie pierwszego żądania.
  • Ogranicz buforowanie reklam natywnych tylko do niezbędnych elementów. Na przykład podczas wstępnego buforowania buforuj tylko reklamy, które są od razu widoczne na ekranie. Reklamy natywne zajmują dużo pamięci, a ich buforowanie bez usuwania powoduje nadmierne wykorzystanie pamięci.

  • Usuwaj reklamy natywne, gdy nie są już używane.

Akceleracja sprzętowa w przypadku reklam wideo

Aby reklamy wideo były prawidłowo wyświetlane w widokach reklam natywnych, musi być włączona akceleracja sprzętowa.

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 klas Activity, które używają reklam.

Włączanie akceleracji sprzętowej

Jeśli aplikacja nie działa prawidłowo po włączeniu akceleracji sprzętowej w całym systemie, możesz też sterować nią 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 tagu AndroidManifest.xml. W tym przykładzie włączamy akcelerację sprzętową w przypadku całej aplikacji, ale wyłączamy 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>

Więcej informacji o opcjach sterowania akceleracją sprzętową znajdziesz w przewodniku po akceleracji sprzętowej. Uwaga: wyświetleń poszczególnych reklam nie można włączyć w przypadku akceleracji sprzętowej, jeśli aktywność jest wyłączona. Akceleracja sprzętowa musi być włączona w przypadku samej aktywności.

Wyświetlanie reklamy

Po wczytaniu reklamy wystarczy wyświetlić ją użytkownikom. Aby dowiedzieć się, jak to zrobić, zapoznaj się z naszym przewodnikiem po reklamach natywnych w wersji zaawansowanej.