Reklamy natywne

Reklamy natywne to komponenty reklamowe, które są 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 sformatować 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 wtedy aplikacja, a nie pakiet SDK do reklam mobilnych Google (beta).

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.

Przykłady są dostępne w językach JavaKotlin.

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. Jeśli tego nie zrobisz, Twoje konto może zostać zawieszone.

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

Format reklamy Przykładowy identyfikator jednostki reklamowej
Natywna 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 argumenty NativeAdRequestNativeAdLoaderCallback.

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 NativeAdNativeAdEventCallback, 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ć wiele reklam, wywołaj funkcję load() z opcjonalnym parametrem numberOfAds. Maksymalna wartość, jaką możesz ustawić, to 5, która reprezentuje liczbę reklam. Pakiet SDK do reklam mobilnych Google (wersja beta) może nie zwracać dokładnej liczby reklam, o którą 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 pakiet SDK do reklam mobilnych Google (wersja beta) 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 pod kątem zapośredniczenia.

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.

  • 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 pliku AndroidManifest.xml. W tym przykładzie włączamy akcelerację sprzętową w 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.

Przykład

Pobierz i uruchom przykładową aplikację, która pokazuje, jak korzystać z pakietu SDK do reklam mobilnych Google (wersja beta).