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

Предварительная загрузка объявлений – это функция Google Mobile Ads SDK (Legacy), которая позволяет Google управлять загрузкой и кешированием объявлений от вашего имени. Чтобы использовать предварительную загрузку объявлений, вам нужно изменить подход к управлению загрузкой объявлений. Чтобы оптимизировать эффективность с помощью предварительной загрузки объявлений, отключите собственное кеширование и делегируйте эту задачу 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) хранит в памяти не более шести предварительно загруженных объявлений. Это ограничение распространяется на все форматы и идентификаторы предварительной загрузки.
  • Рекомендуем использовать размер буфера, равный двум, для каждого идентификатора предварительной загрузки.