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


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

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

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

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

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

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

Пример на GitHub

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

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

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