Предварительная загрузка рекламы (бета-версия)

Выберите платформу: iOS Unity Flutter Android (Legacy)

Ad preloading is a Google-managed ad loading feature in Google Mobile Ads SDK (Legacy) that manages ad loading and caching on your behalf. Ad preloading requires a change in how you manage ad loading. To optimize performance using ad preloading, disable custom caching and delegate that responsibility to Google Mobile Ads SDK (Legacy) .

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

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

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

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

Прежде чем приступить к этому руководству, необходимо установить Google Mobile Ads SDK (Legacy) .

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

When the app starts, call the start method once. After you call the start method, Google Mobile Ads SDK (Legacy) automatically preloads ads and retries failed requests for preloaded configurations.

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

Котлин

// 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 на идентификатор вашего рекламного блока.

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

When using ad preloading, Google Mobile Ads SDK (Legacy) holds cached ads. When you want to show an ad, call the pollAd method. Google Mobile Ads SDK (Legacy) retrieves an available ad and automatically preloads the next ad in the background.

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

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

Котлин

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

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

If you don't need to show ads for a preload ID again in the session, you can stop preloading ads. To stop preloading ads for a specific preload ID, call destroy with a preload ID. To stop preloading for all preloaders, call destroyAll .

Котлин

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

Установите размер буфера

Buffer size controls the number of preloaded ads held in memory. By default, Google optimizes buffer size to balance memory consumption and ad serving latency. If your app displays ads before the next ad is loaded, you can set a custom buffer size to increase the number of ads kept in memory.

Котлин

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