Баннеры

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

Требования

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

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

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

  • Android: ca-app-pub-3940256099942544/6300978111
  • iOS: ca-app-pub-3940256099942544/2934735716

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

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

Реализация

Как настроить AdView

Баннеры показываются в объектах AdView, поэтому первым шагом к интеграции баннеров является создание и размещение объекта AdView.

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

     #include "firebase/gma/ad_view.h"
  2. Объявите и создайте экземпляр объекта AdView:

      firebase::gma::AdView* ad_view;
      ad_view = new firebase::gma::AdView();
  3. Создайте AdSize и инициализируйте представление объявления, используя родительское представление AdParent. Родительское представление – это ссылка JNI jobject на объект Android Activity или указатель на объект iOS UIView, приведенный к типу AdParent:

     // 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 result =
       ad_view->Initialize(ad_parent, kBannerAdUnit, firebase::gma::AdSize::kBanner);
  4. Вместо того чтобы хранить объект Future как переменную, вы можете периодически проверять статус операции инициализации, вызывая метод InitializeLastResult() для объекта AdView. Это может быть полезно для отслеживания процесса инициализации в глобальном игровом цикле.

      // Monitor the status of the future in your game loop:
      firebase::Future<void> result = ad_view->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.
      }
    
  5. Подробнее о работе с firebase::Future рассказывается в статье Как использовать Futures для отслеживания статуса выполнения вызовов методов.

Как задать позицию объявления

Вы можете задать положение AdView в любое время после его инициализации:

firebase::Future<void> result = ad_view->SetPosition(firebase::gma::AdView::kPositionTop);

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

Объявление можно загрузить после инициализации AdView:

firebase::gma::AdRequest ad_request;
firebase::Future<firebase::gma::AdResult> load_ad_result = ad_view->LoadAd(my_ad_request);

Объекты AdRequest представляют собой отдельные запросы объявлений и содержат свойства для такой информации, как таргетинг.

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

Наконец, выведите объявление на экран, вызвав метод Show(). Этот метод можно вызывать в любое время после инициализации объявления:

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

События объявлений

Google Mobile Ads C++ SDK предоставляет класс AdListener, который можно расширить и передать в AdView::SetListener(), чтобы получать уведомления об изменениях состояния представления объявления.

Расширение методов в AdListener необязательно, поэтому вам нужно реализовать только те методы, которые вам нужны. Ниже приведен пример реализации класса, который расширяет все методы класса AdListener:

class ExampleAdListener
    : public firebase::gma::AdListener {
 public:
  ExampleAdListener() {}
  void OnAdClicked() override {
    // This method is invoked when the user clicks the ad.
  }

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

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

  void OnAdOpened() override {
    // This method is invoked when an ad opens an overlay that covers the screen.
  }
};

ExampleAdListener* ad_listener = new ExampleAdListener();
ad_view->SetAdListener(ad_listener);

В таблице ниже перечислены стандартные размеры баннеров.

Размер в пунктах (Ш x В) Описание Доступность Константа firebase::gma::AdSize
320 x 50 Баннер Телефоны и планшеты kBanner
320 x 100 Большой баннер Телефоны и планшеты kLargeBanner
300 x 250 Средний прямоугольник IAB Телефоны и планшеты kMediumRectangle
468 x 60 Полноразмерный баннер IAB Планшеты kFullBanner
728 x 90 Полноразмерный баннер IAB Планшеты kLeaderboard
Указанная ширина x адаптивная высота Адаптивный баннер Телефоны и планшеты Н/Д

Специальные размеры объявлений

Чтобы задать размер баннера, укажите нужные значения в конструкторе firebase::gma::AdSize с параметрами ширины и высоты, как показано ниже.

firebase::gma::AdSize ad_size(/*width=*/320, /*height=*/50);

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

Пример на GitHub

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