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

Выберите платформу: Android (бета-версия)Новый Android iOS Unity

Предварительная загрузка рекламы — это функция загрузки рекламы, управляемая Google в Google Mobile Ads SDK , которая управляет загрузкой и кэшированием рекламы от вашего имени. Предварительная загрузка рекламы требует изменения способа управления загрузкой рекламы. Для оптимизации производительности при использовании предварительной загрузки рекламы отключите пользовательское кэширование и передайте эту задачу Google Mobile Ads SDK .

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

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

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

Предварительные требования

Прежде чем приступить к выполнению инструкций, необходимо выполнить следующие действия:

  • Установите Google Mobile Ads SDK версии 24.4.0 или выше. Ресурсы для разработчиков более ранних версий доступны в разделах 23.6.1 - 24.3.0 , но мы рекомендуем использовать версию 24.4.0 или выше и следовать этому руководству в дальнейшем.
  • Настройте Google Mobile Ads SDK .
  • Дополнительно: Загрузите и запустите пример приложения на Java или Kotlin .

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

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

В следующем примере запускается предварительная загрузка рекламы:

Котлин

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

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

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

Котлин

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

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

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

Получите доступ к предварительно загруженной рекламе.

В следующем примере проверяется доступность рекламы:

Котлин

// 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() если объявление не будет показано немедленно.

В следующем примере осуществляется регистрация для участия в рекламных мероприятиях:

Котлин

// 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() с указанным идентификатором предварительной загрузки.

Котлин

// 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 оптимизирует размер буфера для баланса между потреблением памяти и задержкой показа рекламы. Если ваше приложение показывает рекламу до загрузки следующей рекламы, вы можете установить пользовательский размер буфера, чтобы увеличить количество рекламных объявлений, хранящихся в памяти. Мы рекомендуем размер буфера не более четырех.

Котлин

// Define a PreloadConfiguration and buffer up to 5 preloaded ads.
val configuration = PreloadConfiguration.Builder("AD_UNIT_ID").setBufferSize(5).build()

Java

// Define a PreloadConfiguration and buffer up to 5 preloaded ads.
PreloadConfiguration configuration =
    new PreloadConfiguration.Builder("AD_UNIT_ID").setBufferSize(5).build();