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

Предварительная загрузка объявлений – это функция загрузки объявлений, управляемая Google в Google Mobile Ads SDK (Legacy). Она позволяет управлять загрузкой и кешированием объявлений от вашего имени. Предварительная загрузка объявлений требует изменить подход к управлению загрузкой. Чтобы оптимизировать производительность с помощью предварительной загрузки объявлений, отключите пользовательское кеширование и передайте эту функцию Google Mobile Ads SDK (Legacy).

Предварительная загрузка объявлений имеет следующие преимущества по сравнению с загрузкой вручную:

  • Управление ссылками. Загруженные объявления сохраняются, поэтому вам не нужно поддерживать ссылки, пока вы не будете готовы их показывать.
  • Автоматическая перезагрузка. Новое объявление загружается автоматически, когда вы извлекаете одно из кеша.
  • Управляемые повторные попытки. Автоматически повторяет неудачные запросы с использованием экспоненциального откладывания.
  • Обработка истечения срока действия. Объявления автоматически обновляются до истечения срока действия (обычно через час).
  • Оптимизация кеша. Если размер кеша больше единицы, Google Mobile Ads SDK (Legacy)оптимизирует порядок кеширования, чтобы показывать наиболее подходящие объявления.

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

Требования

Прежде чем приступить к выполнению инструкций из этого руководства, настройте Google Mobile Ads SDK (Legacy).

Как начать предварительную загрузку объявлений

При запуске приложения вызовите метод start один раз. После вызова метода start Google Mobile Ads SDK (Legacy) автоматически предварительно загружает объявления и повторяет неудачные запросы для предварительно загруженных конфигураций.

В следующем примере начинается предварительная загрузка объявлений:

Kotlin

// Define a PreloadConfiguration.
val configuration = PreloadConfiguration.Builder("AD_UNIT_ID").build()
// Start the preloading with a given preload ID, preload configuration.
InterstitialAdPreloader.start("AD_UNIT_ID", configuration)

Java

// Define a PreloadConfiguration.
PreloadConfiguration configuration = new PreloadConfiguration.Builder("AD_UNIT_ID").build();
// Start the preloading with a given preload ID, preload configuration.
InterstitialAdPreloader.start("AD_UNIT_ID", configuration);

Замените AD_UNIT_ID идентификатором рекламного блока.

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

При предварительной загрузке объявлений Google Mobile Ads SDK (Legacy) хранит их в кеше. Чтобы показать объявление, вызовите метод pollAd. Google Mobile Ads SDK (Legacy) получает доступное объявление и автоматически предварительно загружает следующее объявление в фоновом режиме.

Не вызывайте метод pollAd, пока не будете готовы показать объявление. Хранение объявлений в кеше позволяет Google Mobile Ads SDK (Legacy) автоматически обновлять объявления с истекшим сроком действия и оптимизировать кеш.

В следующем примере показано, как получить и показать предварительно загруженное объявление:

Kotlin

// pollAd() returns the next available ad and loads another ad in the background.
val ad = InterstitialAdPreloader.pollAd("AD_UNIT_ID")

// [Optional] Interact with the ad as needed.
ad?.onPaidEventListener = OnPaidEventListener {
  // [Optional] Send the impression-level ad revenue information to your preferred
  // analytics server directly within this callback.
}

// Show the ad immediately.
ad?.show(activity)

Java

// pollAd() returns the next available ad and loads another ad in the background.
InterstitialAd ad = InterstitialAdPreloader.pollAd("AD_UNIT_ID");

if (ad != null) {
  // [Optional] Interact with the ad object as needed.
  ad.setOnPaidEventListener(
      adValue -> {
        // [Optional] Send the impression-level ad revenue information to your preferred
        // analytics server directly within this callback.
      });

  // Show the ad immediately.
  ad.show(activity);
}

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

Чтобы проверить доступность рекламы, выполните одно из следующих действий:

Как узнать, доступно ли предзагруженное объявление

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

Kotlin

// Verify that a preloaded ad is available.
if (!InterstitialAdPreloader.isAdAvailable("AD_UNIT_ID")) {
  // No ads are available to show.
}

Java

// Verify that a preloaded ad is available.
if (!InterstitialAdPreloader.isAdAvailable("AD_UNIT_ID")) {
  // No ads are available to show.
}

Слушайте информацию о доступности предзагруженных объявлений

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

События предзагрузки предназначены для аналитики. В обратных вызовах события предзагрузки:

  • Не вызывать start.
  • Не вызывайте функцию pollAd, если объявление не будет показано сразу.

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

Kotlin

// Define a callback to receive preload events.
val callback =
  object : PreloadCallbackV2() {
    override fun onAdPreloaded(preloadId: String, responseInfo: ResponseInfo?) {
      // Called when preloaded ads are available.
    }

    override fun onAdsExhausted(preloadId: String) {
      // Called when no preloaded ads are available.
    }

    override fun onAdFailedToPreload(preloadId: String, adError: AdError) {
      // Called when preloaded ads failed to load.
    }
  }

Java

// Define a callback to receive preload events.
PreloadCallbackV2 callback =
    new PreloadCallbackV2() {
      @Override
      public void onAdPreloaded(
          @NonNull String preloadId, @Nullable ResponseInfo responseInfo) {
        // Called when preloaded ads are available.
      }

      @Override
      public void onAdsExhausted(@NonNull String preloadId) {
        // Called when no preloaded ads are available.
      }

      @Override
      public void onAdFailedToPreload(@NonNull String preloadId, @NonNull AdError adError) {
        // Called when preloaded ads failed to load.
      }
    };

Как отключить предварительную загрузку рекламы

Если вам больше не нужно показывать объявления с идентификатором предварительной загрузки в текущем сеансе, вы можете остановить предварительную загрузку. Чтобы остановить предварительную загрузку объявлений для определенного идентификатора, вызовите destroy с идентификатором предварительной загрузки. Чтобы остановить предварительную загрузку для всех загрузчиков, вызовите destroyAll.

Kotlin

// Stops the preloading and destroy preloaded ads.
InterstitialAdPreloader.destroy("AD_UNIT_ID")
// Stops the preloading and destroy all ads.
InterstitialAdPreloader.destroyAll()

Java

// Stops the preloading and destroy preloaded ads.
InterstitialAdPreloader.destroy("AD_UNIT_ID");
// Stops the preloading and destroy all ads.
InterstitialAdPreloader.destroyAll();

Как задать размер буфера

Размер буфера определяет количество предварительно загруженных объявлений, хранящихся в памяти. По умолчанию Google оптимизирует размер буфера, чтобы сбалансировать потребление памяти и задержку показа рекламы. Если в вашем приложении объявления показываются до того, как загрузится следующее, вы можете задать собственный размер буфера, чтобы увеличить количество объявлений, хранящихся в памяти.

Kotlin

// Define a PreloadConfiguration and set the buffer size to 2 preloaded ads.
val configuration = PreloadConfiguration.Builder("AD_UNIT_ID").setBufferSize(2).build()

Java

// Define a PreloadConfiguration and set the buffer size to 2 preloaded ads.
PreloadConfiguration configuration =
    new PreloadConfiguration.Builder("AD_UNIT_ID").setBufferSize(2).build();

Лимиты предварительной загрузки кеша

Google Mobile Ads SDK (Legacy) устанавливает ограничение на общее количество предварительно загруженных объявлений в приложении для всех рекламных блоков и идентификаторов предварительной загрузки:

  • По умолчанию: Google Mobile Ads SDK (Legacy) может хранить в памяти до шести предварительно загруженных объявлений. Это ограничение распространяется на все форматы и идентификаторы предварительной загрузки.
  • Мы рекомендуем задать для каждого идентификатора предзагрузки размер буфера, равный двум.