Как загрузить нативное объявление

Нативные объявления – это объекты объявлений, которые показываются пользователям через компоненты интерфейса, нативные для платформы. Они показываются в тех же типах представлений, которые вы уже используете для создания макетов, и могут быть отформатированы в соответствии с визуальным дизайном вашего приложения.

При загрузке нативного объявления приложение получает объект объявления, содержащий его объекты, и за их показ отвечает приложение, а не GMA Next-Gen SDK.

В целом успешное внедрение нативных объявлений состоит из двух частей: загрузки объявления с помощью SDK и последующего показа содержания объявления в приложении.

В этой статье рассказывается, как использовать SDK для загрузки нативных объявлений.

Требования

Всегда тестируйте с помощью тестовых объявлений

При создании и тестировании приложений используйте тестовые объявления, а не реальные. В противном случае ваш аккаунт может быть заблокирован.

Самый простой способ загрузить тестовые объявления – использовать специальный идентификатор тестового рекламного блока для нативных объявлений:

Формат объявления Пример идентификатора рекламного блока
Стандартное /21775744923/example/native
Нативная видеореклама /21775744923/example/native-video

Загрузка объявления

Чтобы загрузить нативное объявление, вызовите метод NativeAdLoader.load(), который принимает NativeAdRequest и 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 = "/21775744923/example/native"
  }
}

Как настроить обратный вызов события нативного объявления

При обработке onNativeAdLoaded задайте полученный NativeAd с помощью NativeAdEventCallback, чтобы определить функции для получения событий жизненного цикла нативного объявления:

  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.
      }
    }

Как загрузить несколько объявлений (необязательно)

Чтобы загрузить несколько объявлений, вызовите load() с необязательным параметром numberOfAds. Максимальное значение, которое можно задать, – 5 (количество объявлений). GMA Next-Gen SDK может вернуть не точное количество объявлений, которое вы запросили.

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

Объявления, возвращаемые GMA Next-Gen SDK, уникальны, однако объявления из зарезервированного инвентаря или от сторонних покупателей могут не быть уникальными.

Если вы используете медиацию, не вызывайте метод load(). Запросы нескольких нативных объявлений не работают с идентификаторами рекламных блоков, настроенных для медиации.

Рекомендации

При загрузке объявлений следуйте приведенным ниже правилам.

  • Приложения, в которых нативные объявления показываются в списках, должны предварительно кешировать эти списки.

  • При предварительном кешировании объявлений очищайте кеш и перезагружайте страницу каждый час.

  • Ограничьте кеширование нативных объявлений только необходимыми данными. Например, при предварительном кешировании кешируйте только те объявления, которые сразу видны на экране. Нативные объявления занимают много памяти, и их кеширование без удаления приводит к чрезмерному использованию памяти.

  • Удаляйте нативные объявления, когда они больше не используются.

Аппаратное ускорение для видеообъявлений

Чтобы видеообъявления показывались в нативных рекламных блоках, необходимо включить аппаратное ускорение.

Аппаратное ускорение включено по умолчанию, но некоторые приложения могут отключать его. Если это относится к вашему приложению, рекомендуем включить аппаратное ускорение для классов Activity, в которых используется реклама.

Как включить аппаратное ускорение

Если приложение работает некорректно, когда аппаратное ускорение включено на глобальном уровне, вы можете управлять им для отдельных действий. Чтобы включить или отключить аппаратное ускорение, используйте атрибут android:hardwareAccelerated для элементов <application> и <activity> в файле AndroidManifest.xml. В следующем примере аппаратное ускорение включено для всего приложения, но отключено для одного действия:

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

Подробнее о том, как управлять аппаратным ускорением, рассказывается в руководстве по аппаратному ускорению. Обратите внимание, что аппаратное ускорение нельзя включить для отдельных объявлений, если оно отключено для действия.

Показ объявления

После загрузки объявления его нужно показать пользователям. Подробнее о расширенных нативных объявлениях и полноэкранных нативных объявлениях…

Пример

Скачайте и запустите пример приложения, в котором показано, как использовать GMA Next-Gen SDK.