Wczytywanie reklamy natywnej

Reklamy natywne to komponenty reklam wyświetlane użytkownikom za pomocą komponentów interfejsu, które są natywne dla platformy. Są wyświetlane przy użyciu 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 wyglądu aplikacji.

Gdy reklama natywna się wczyta, aplikacja otrzyma obiekt reklamowy zawierający jej komponenty i to ona, a nie GMA Next-Gen SDK, będzie odpowiedzialna za ich wyświetlanie.

Ogólnie rzecz biorąc, skuteczne wdrożenie reklam natywnych składa się z 2 etapów: wczytania reklamy za pomocą pakietu SDK, a następnie wyświetlenia jej treści 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 poradniku dotyczącym reklam natywnych.

Przykłady są dostępne w językach Java i Kotlin.

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

Wymagania wstępne

Zawsze przeprowadzaj testy z użyciem reklam testowych

Podczas tworzenia i testowania aplikacji używaj reklam testowych, a nie aktywnych reklam produkcyjnych. Jeśli tego nie zrobisz, Twoje konto może zostać zawieszone.

Najłatwiejszym sposobem wczytywania reklam testowych jest użycie naszego dedykowanego identyfikatora testowej jednostki reklamowej na potrzeby reklam natywnych:

Format reklamy Przykładowy identyfikator jednostki reklamowej
Rodzimy użytkownik ca-app-pub-3940256099942544/2247696110
Natywna wideo ca-app-pub-3940256099942544/1044960115

Wczytywanie reklamy

Aby wczytać reklamę natywną, wywołaj metodę NativeAdLoader.load(), która przyjmuje parametry NativeAdRequest i NativeAdLoaderCallback.

import com.google.android.libraries.ads.mobile.sdk.common.LoadAdError
import com.google.android.libraries.ads.mobile.sdk.nativead.NativeAd
import com.google.android.libraries.ads.mobile.sdk.nativead.NativeAdLoader
import com.google.android.libraries.ads.mobile.sdk.nativead.NativeAdLoaderCallback
import com.google.android.libraries.ads.mobile.sdk.nativead.NativeAdRequest

class NativeFragment : Fragment() {

  private var nativeAd: NativeAd? = null

  override fun onViewCreated(view: View, savedInstanceState: Bundle?) {
    super.onViewCreated(view, savedInstanceState)
    loadAd()
  }

  private fun loadAd() {
    // Build an ad request with native ad options to customize the ad.
    val adRequest = NativeAdRequest
      .Builder(AD_UNIT_ID, listOf(NativeAd.NativeAdType.NATIVE))
      .build()

    val adCallback =
      object : NativeAdLoaderCallback {
        override fun onNativeAdLoaded(nativeAd: NativeAd) {
          // Called when a native ad has loaded.
        }
        override fun onAdFailedToLoad(adError: LoadAdError) {
          // Called when a native ad has failed to load.
        }
      }

    // Load the native ad with our request and callback.
    NativeAdLoader.load(adRequest, adCallback)
  }

  companion object {
    // Sample native ad unit ID.
    const val AD_UNIT_ID = "ca-app-pub-3940256099942544/2247696110"
  }
}

Ustawianie wywołania zwrotnego zdarzenia reklamy natywnej

Podczas obsługi onNativeAdLoaded ustaw otrzymany NativeAd za pomocą NativeAdEventCallback, aby zdefiniować funkcje do odbierania zdarzeń cyklu życia reklamy natywnej:

  nativeAd.adEventCallback =
    object : NativeAdEventCallback {
      override fun onAdShowedFullScreenContent() {
        // Native ad showed full screen content.
      }
      override fun onAdDismissedFullScreenContent() {
        // Native ad dismissed full screen content.
      }
      override fun onAdFailedToShowFullScreenContent {
        // Native ad failed to show full screen content.
      }
      override fun onAdImpression() {
        // Native ad recorded an impression.
      }
      override fun onAdClicked() {
        // Native ad recorded a click.
      }
    }

Opcjonalnie: wczytywanie wielu reklam

Aby wczytać kilka reklam, wywołaj load() z opcjonalnym parametrem numberOfAds. Maksymalna wartość, jaką możesz ustawić, to 5, co oznacza liczbę reklam. GMA Next-Gen SDK może nie zwrócić dokładnie takiej liczby reklam, o jaką prosisz.

private fun loadAd() {
  // Build an ad request with native ad options to customize the ad.
  val adRequest = NativeAdRequest
    .Builder(AD_UNIT_ID, listOf(NativeAd.NativeAdType.NATIVE))
    .build()

  val adCallback =
    object : NativeAdLoaderCallback {
      override fun onNativeAdLoaded(nativeAd: NativeAd) {
        // Called when a native ad has loaded.
      }
      override fun onAdFailedToLoad(adError: LoadAdError) {
        // Called when a native ad has failed to load.
      }
      override fun onAdLoadingCompleted() {
        // Called when all native ads have loaded.
      }
    }

  // Load the native ad with our request and callback.
  NativeAdLoader.load(adRequest, 3, adCallback)
}

Reklamy zwracane przez GMA Next-Gen SDK są unikalne, ale reklamy z zarezerwowanych zasobów reklamowych lub od zewnętrznych kupujących mogą nie być unikalne.

Jeśli używasz zapośredniczenia, nie wywołuj metody load(). Żądania wielu reklam natywnych nie działają w przypadku identyfikatorów jednostek reklamowych skonfigurowanych na potrzeby zapośredniczenia.

Sprawdzone metody

Podczas wczytywania reklam przestrzegaj tych reguł.

  • Aplikacje, które używają reklam natywnych na liście, powinny wstępnie zapisywać listę reklam w pamięci podręcznej.

  • Jeśli wstępnie buforujesz reklamy, po godzinie wyczyść pamięć podręczną i ponownie załaduj stronę.

  • Ogranicz buforowanie reklam natywnych tylko do niezbędnego minimum. Na przykład podczas wstępnego buforowania zapisuj w pamięci podręcznej tylko te reklamy, które są od razu widoczne na ekranie. Reklamy natywne zajmują dużo pamięci, a buforowanie ich bez niszczenia powoduje nadmierne wykorzystanie pamięci.

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

Akceleracja sprzętowa w przypadku 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 dotyczy to Twojej aplikacji, zalecamy włączenie akceleracji sprzętowej w klasach Activity, które korzystają z reklam.

Włączanie akceleracji sprzętowej

Jeśli aplikacja nie działa prawidłowo z włączoną globalnie akceleracją sprzętową, możesz ją kontrolować w przypadku poszczególnych działań. Aby włączyć lub wyłączyć akcelerację sprzętową, użyj atrybutu android:hardwareAccelerated dla elementów <application> i <activity> w pliku AndroidManifest.xml. W tym przykładzie akceleracja sprzętowa jest włączona w całej aplikacji, ale wyłączona w 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 kontrolowania akceleracji sprzętowej znajdziesz w przewodniku po akceleracji sprzętowej. Pamiętaj, że nie można włączyć akceleracji sprzętowej w przypadku wyświetleń pojedynczych reklam, jeśli aktywność jest wyłączona, więc 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 artykule Zaawansowane reklamy natywne lub Pełnoekranowe reklamy natywne.

Przykład

Pobierz i uruchom przykładową aplikację, która pokazuje, jak używać GMA Next-Gen SDK.