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


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

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

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

Пример в GitHub

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

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

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