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


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

В этом руководстве рассказывается, как интегрировать межстраничные объявления в приложения для Android и iOS с помощью Google Mobile Ads C++ SDK.

Требования

Всегда используйте тестовые объявления

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

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

  • Android: ca-app-pub-3940256099942544/1033173712
  • iOS: ca-app-pub-3940256099942544/4411468910

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

Подробнее о том, как работают тестовые объявления Mobile Ads SDK, читайте в статье Тестовые объявления.

Реализация

Основные этапы интеграции межстраничных объявлений:

  1. Загрузите объявление.
  2. Зарегистрируйте обратные вызовы.
  3. Покажите объявление и обработайте события его жизненного цикла.

Настроить InterstitialAd

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

  1. Добавьте в код C++ приложения следующий заголовок:

     #include "firebase/gma/interstial_ad.h"

  2. Объявите и создайте экземпляр объекта InterstitialAd:

     firebase::gma::InterstitialAd* interstitial_ad;
     interstitial_ad = new firebase::gma::InterstitialAd();

  3. Инициализируйте экземпляр InterstitialAd, используя родительское представление, приведенное к типу AdParent. Родительский элемент просмотра – это ссылка JNI jobject на Android Activity или указатель на iOS UIView.

    // my_ad_parent is a jobject reference to an Android Activity or
    // a pointer to an iOS UIView.
    firebase::gma::AdParent ad_parent =
      static_cast<firebase::gma::AdParent>(my_ad_parent);
    firebase::Future<void> result = interstitial_ad->Initialize(ad_parent);
    
  4. Вместо того чтобы сохранять future в качестве переменной, вы можете периодически проверять статус операции инициализации, вызывая InitializeLastResult() для объекта InterstitialAd. Это может быть полезно для отслеживания процесса инициализации в глобальном игровом цикле.

    // Monitor the status of the future in your game loop:
    firebase::Future<void> result = interstitial_ad->InitializeLastResult();
    if (result.status() == firebase::kFutureStatusComplete) {
      // Initialization completed.
      if(future.error() == firebase::gma::kAdErrorCodeNone) {
        // Initialization successful.
      } else {
        // An error has occurred.
      }
    } else {
      // Initialization on-going.
    }
    

Подробнее о том, как работать с firebase::Future, читайте в статье Как использовать Futures для отслеживания статуса выполнения вызовов методов.

Загрузка объявления

Объявление загружается с помощью метода LoadAd() объекта InterstitialAd. Для метода load необходимо инициализировать объект InterstitialAd, а также иметь идентификатор рекламного блока и объект AdRequest. Возвращается объект firebase::Future, который можно использовать для отслеживания состояния и результата операции загрузки.

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

firebase::gma::AdRequest ad_request;
firebase::Future<firebase::gma::AdResult> load_ad_result;
load_ad_result = interstitial_ad->LoadAd(interstitial_ad_unit_id, ad_request);

Регистрация обратных вызовов

Чтобы получать уведомления о показе межстраничных объявлений и событиях жизненного цикла, необходимо расширить класс FullScreenContentListener. Собственный подкласс FullScreenContentListener можно зарегистрировать с помощью метода InterstitialAd::SetFullScreenContentListener(). Он будет получать обратные вызовы при успешном или неуспешном показе объявления, а также при его закрытии.

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

  class ExampleFullScreenContentListener
      : public firebase::gma::FullScreenContentListener {

   public:
    ExampleFullScreenContentListener() {}

    void OnAdClicked() override {
      // This method is invoked when the user clicks the ad.
    }

    void OnAdDismissedFullScreenContent() override {
     // This method is invoked when the ad dismisses full screen content.
    }

    void OnAdFailedToShowFullScreenContent(const AdError& error) override {
      // This method is invoked when the ad failed to show full screen content.
      // Details about the error are contained within the AdError parameter.
    }

    void OnAdImpression() override {
      // This method is invoked when an impression is recorded for an ad.
    }

    void OnAdShowedFullScreenContent() override {
      // This method is invoked when the ad showed its full screen content.
    }
  };

  ExampleFullScreenContentListener* full_screen_content_listener =
    new ExampleFullScreenContentListener();
  interstitial_ad->SetFullScreenContentListener(full_screen_content_listener);

InterstitialAd – это одноразовый объект. Это означает, что после показа межстраничного объявления оно не может быть показано снова. Рекомендуется загружать следующее межстраничное объявление в методе OnAdDismissedFullScreenContent() класса FullScreenContentListener, чтобы оно начало загружаться сразу после закрытия предыдущего.

Показ объявления

Межстраничные объявления должны показываться во время естественных пауз в работе приложения, например между уровнями игры или после выполнения задачи. FullScreenContentListener можно использовать, чтобы определить, когда объявление было показано в полноэкранном режиме, а future, возвращаемый Show(), также сигнализирует об успешном показе объявления.

  firebase::Future<void> result = interstitial_ad->Show();

Рекомендации

Подумайте, подходят ли межстраничные объявления для вашего приложения.
Межстраничные объявления лучше всего подходят для приложений с естественными переходами между экранами. Например, переходом может быть выполнение задачи в приложении, такой как отправка изображения или завершение игрового уровня. Поскольку пользователь ожидает перерыва в действии, межстраничное объявление не помешает ему. Подумайте, в какие моменты лучше показывать межстраничные объявления и как на них будут реагировать пользователи.
Не забудьте приостановить действие при показе межстраничного объявления.
Существует несколько типов межстраничных объявлений: текстовые, графические, видеообъявления и т. д. Важно, чтобы при показе межстраничного объявления приложение приостанавливало использование некоторых ресурсов, чтобы их могло использовать объявление. Например, при вызове межстраничного объявления необходимо приостановить воспроизведение звука в приложении. Возобновить его можно с помощью метода OnAdDismissedFullScreenContent установленного объекта FullScreenContentListener, который будет вызван, когда пользователь закончит взаимодействовать с объявлением. Кроме того, на время показа объявления рекомендуется приостанавливать выполнение ресурсоемких задач, например игрового цикла. Это позволит избежать задержек в воспроизведении видео и графики.
Убедитесь, что страница загружается достаточно быстро.
Важно не только показывать межстраничные объявления в подходящий момент, но и сделать так, чтобы пользователю не приходилось ждать их загрузки. Загрузка объявления до его показа гарантирует, что в нужный момент в приложении будет готово полностью загруженное межстраничное объявление.
Не показывайте пользователю слишком много объявлений.
Увеличение частоты показа межстраничных объявлений может показаться отличным способом повысить доход, но это также может ухудшить удобство для пользователей и снизить CTR. Убедитесь, что реклама не показывается слишком часто и не мешает пользователям работать с приложением.
Не используйте объект Future, возвращаемый методом load, для показа межстраничного объявления.
Это может быть неудобно для пользователей. Вместо этого загружайте объявление заранее.

Дополнительные ресурсы

Пример на GitHub

Видеоуроки Mobile Ads Garage

Истории успеха

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