Межстраничные объявления

Межстраничные объявления – это полноэкранный формат, который закрывает все элементы интерфейса приложения. Обычно такая реклама показывается при естественных переходах между разделами приложения или уровнями игры. Когда в приложении показывается межстраничное объявление, пользователь может нажать на него и перейти на целевую страницу или закрыть объявление и вернуться в приложение.

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

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

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

Самый простой способ загрузить тестовые объявления – использовать специальный идентификатор рекламного блока для межстраничных объявлений:

Android

ca-app-pub-3940256099942544/1033173712

iOS

ca-app-pub-3940256099942544/4411468910

Тестовые рекламные блоки настроены так, чтобы возвращать тестовые объявления для каждого запроса. Вы можете использовать их в своих приложениях при написании кода, тестировании и отладке. Только не забудьте заменить их на собственные идентификаторы рекламных блоков перед публикацией приложения.

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

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

InterstitialAd.load(
  adUnitId: "_adUnitId",
  request: const AdRequest(),
  adLoadCallback: InterstitialAdLoadCallback(
    onAdLoaded: (InterstitialAd ad) {
      // Called when an ad is successfully received.
      debugPrint('Ad was loaded.');
      // Keep a reference to the ad so you can show it later.
      _interstitialAd = ad;
    },
    onAdFailedToLoad: (LoadAdError error) {
      // Called when an ad request failed.
      debugPrint('Ad failed to load with error: $error');
    },
  ),
);

Вместо _adUnitId укажите идентификатор своего рекламного блока.

События межстраничных объявлений

С помощью FullScreenContentCallback можно отслеживать события жизненного цикла, например показ или закрытие объявления. Установите значение InterstitialAd.fullScreenContentCallback до показа объявления, чтобы получать уведомления об этих событиях. В этом примере реализованы все методы:

ad.fullScreenContentCallback = FullScreenContentCallback(
  onAdShowedFullScreenContent: (ad) {
    // Called when the ad showed the full screen content.
    debugPrint('Ad showed full screen content.');
  },
  onAdFailedToShowFullScreenContent: (ad, err) {
    // Called when the ad failed to show full screen content.
    debugPrint('Ad failed to show full screen content with error: $err');
    // Dispose the ad here to free resources.
    ad.dispose();
  },
  onAdDismissedFullScreenContent: (ad) {
    // Called when the ad dismissed full screen content.
    debugPrint('Ad was dismissed.');
    // Dispose the ad here to free resources.
    ad.dispose();
  },
  onAdImpression: (ad) {
    // Called when an impression occurs on the ad.
    debugPrint('Ad recorded an impression.');
  },
  onAdClicked: (ad) {
    // Called when a click is recorded for an ad.
    debugPrint('Ad was clicked.');
  },
);

Как показывать межстраничные объявления

InterstitialAd отображается как Overlay поверх всего контента приложения и статически размещается, поэтому его нельзя добавить в дерево виджетов Flutter. Вы можете выбрать, когда показывать рекламу, вызвав метод show().

_interstitialAd?.show();

После вызова метода show() показанное таким образом диалоговое окно Ad нельзя закрыть программно, для этого требуется ввод данных пользователем. InterstitialAd можно показать только один раз. Последующие вызовы функции show будут запускать onAdFailedToShowFullScreenContent.

Объявление необходимо удалить, когда оно больше не нужно. Рекомендуется вызывать функцию dispose() в обратных вызовах FullScreenContentCallback.onAdDismissedFullScreenContent и FullScreenContentCallback.onAdFailedToShowFullScreenContent.

Готово! Теперь в вашем приложении можно показывать межстраничные объявления.

Дальнейшие действия

Полный пример на GitHub

Полный пример можно посмотреть в демоверсии API.