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


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

В этом руководстве рассказывается, как интегрировать межстраничные объявления в приложения для 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 на Activity Android или указатель на UIView iOS.

    // 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 можно использовать, чтобы определить, когда объявление было показано в полноэкранном режиме, а Show() – когда оно было успешно показано.

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

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

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

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

Пример на GitHub

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

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

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