Wczytywanie reklamy natywnej

Reklamy natywne to komponenty reklamowe, które są prezentowane użytkownikom za pomocą komponentów interfejsu użytkownika natywnych dla platformy. Wyświetlają się one w tych samych typach widoków, których używasz do tworzenia układów, i można je formatować tak, aby pasowały do wyglądu aplikacji.

Gdy reklama natywna się wczyta, Twoja aplikacja otrzyma obiekt reklamy zawierający jej komponenty, a od tego momentu to aplikacja, a nie Google Mobile Ads SDK (Legacy)—jest odpowiedzialna za ich wyświetlanie.

Ogólnie rzecz biorąc, pomyślna implementacja reklam natywnych składa się z 2 części: wczytania reklamy za pomocą pakietu SDK i wyświetlenia treści reklamy w aplikacji.

Na tej stronie dowiesz się, jak używać pakietu SDK do wczytywania reklam natywnych.

Wymagania wstępne

Zanim przejdziesz dalej, skonfiguruj Google Mobile Ads SDK (Legacy).

Zawsze testuj za pomocą reklam testowych

Podczas tworzenia i testowania aplikacji używaj reklam testowych, a nie reklam produkcyjnych.

Najłatwiejszym sposobem na wczytanie reklam testowych jest użycie naszego specjalnego identyfikatora jednostki reklamowej do testowania reklam natywnych na Androidzie:

/21775744923/example/native

Został on specjalnie skonfigurowany tak, aby zwracać reklamy testowe w odpowiedzi na każde żądanie. 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 Google Mobile Ads SDK (Legacy) reklamach testowych znajdziesz w artykule Włączanie reklam testowych.

Wczytywanie reklam

Reklamy natywne są wczytywane za pomocą klasy AdLoader, która ma własną klasę Builder umożliwiającą dostosowanie jej podczas tworzenia. Dodając do klasy AdLoader detektory podczas jej tworzenia, aplikacja określa, jakie typy reklam natywnych jest gotowa odbierać. Klasa AdLoader wysyła wtedy żądania tylko tych typów.

Tworzenie klasy AdLoader

Poniższy kod pokazuje, jak utworzyć klasę AdLoader, która 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 klasy AdLoader do formatu NativeAd. Gdy reklama zostanie wczytana, wywoływana jest metoda onNativeAdLoaded() obiektu detektora.

Konfigurowanie klasy AdListener za pomocą klasy AdLoader (opcjonalnie)

Podczas tworzenia klasy AdLoader funkcja withAdListener ustawia dla niej klasę AdListener. Metoda przyjmuje jako jedyny parametr klasę AdListener, która otrzymuje wywołania zwrotne z klasy AdLoader w przypadku wystąpienia zdarzeń cyklu życia reklamy:

Java

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

Kotlin

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

Wysyłanie żądań reklam

Po utworzeniu klasy AdLoader możesz jej użyć do wysyłania żądań reklam. Dostępne są 2 metody: loadAd() i loadAds().

loadAd()

Ta metoda wysyła żądanie pojedynczej reklamy.

Java

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

Kotlin

adLoader.loadAd(AdManagerAdRequest.Builder().build())

loadAds()

Ta metoda wysyła żądanie wielu reklam (maksymalnie 5):

Java

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

Kotlin

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

Obie metody przyjmują jako pierwszy parametr obiekt AdManagerAdRequest. Jest to ta sama AdManagerAdRequest klasa, której używają banery i reklamy pełnoekranowe, możesz używać metod klasy AdManagerAdRequest do dodawania informacji 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 ma próbować wczytać w odpowiedzi na żądanie. Ta liczba jest ograniczona do 5 i nie ma gwarancji, że pakiet SDK zwróci dokładnie taką liczbę reklam.

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

Jeśli używasz zapośredniczenia, nie używaj metody loadAds(), 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 metody loadAd() następuje pojedyncze wywołanie wcześniej zdefiniowanych metod detektora, aby dostarczyć obiekt reklamy natywnej lub zgłosić błąd.

Zwalnianie zasobów

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

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

W wywołaniu zwrotnym onNativeAdLoaded zniszcz wszystkie istniejące reklamy natywne, do których nie będzie już odwołań.

Kolejnym ważnym krokiem jest sprawdzenie, czy aktywność została zniszczona. Jeśli tak, wywołaj metodę destroy() w przypadku zwróconej reklamy i natychmiast zakończ działanie:

Java

nativeAd.destroy();

Kotlin

nativeAd.destroy()

Sprawdzone metody

Podczas wczytywania reklam przestrzegaj tych zasad.

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

  • Podczas wstępnego wczytywania reklam wyczyść pamięć podręczną i wczytaj ponownie po godzinie.

  • Nie wywołuj metody loadAd() w przypadku klasy AdLoader, dopóki nie zakończy się wczytywanie pierwszego żądania.
  • Ogranicz buforowanie reklam natywnych tylko do tego, co jest potrzebne. Na przykład podczas wstępnego wczytywania buforuj tylko reklamy, które są od razu widoczne na ekranie. Reklamy natywne mają duże wykorzystanie pamięci, a buforowanie reklam natywnych bez ich niszczenia powoduje nadmierne wykorzystanie pamięci.

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

Akceleracja sprzętowa w przypadku reklam wideo

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

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 Twoja aplikacja nie działa prawidłowo przy włączonej akceleracji sprzętowej, możesz ją kontrolować także w przypadku poszczególnych aktywności. Aby włączyć lub wyłączyć akcelerację sprzętową, użyj atrybutu android:hardwareAccelerateddla <application> i <activity> elementów w pliku AndroidManifest.xml. Poniższy 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>

Więcej informacji o opcjach sterowania akceleracją sprzętową znajdziesz w przewodniku po akceleracji sprzętowej. Pamiętaj, że poszczególne widoki reklam nie mogą być włączone do akceleracji sprzętowej, jeśli aktywność jest wyłączona, dlatego sama aktywność musi mieć włączoną akcelerację sprzętową.

Wyświetlanie reklamy

Po wczytaniu reklamy wystarczy ją wyświetlić użytkownikom. Więcej informacji znajdziesz w artykułach Zaawansowane reklamy natywne i Reklamy natywne pełnoekranowe.