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

Выберите платформу: 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();