Медиация


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

Требования

Чтобы интегрировать посредничество для определенного формата объявлений, сначала нужно интегрировать этот формат в приложение:

Вы только начали работать с медиацией? Ознакомьтесь со статьей Об агрегаторе AdMob.

Инициализация Mobile Ads SDK

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

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

// Initialize the Google Mobile Ads library
firebase::gma::Initialize(*app);

// In a game loop, monitor the initialization status
auto initialize_future = firebase::gma::InitializeLastResult();

if (initialize_future.status() == firebase::kFutureStatusComplete &&
    initialize_future.error() == firebase::gma::kAdErrorCodeNone) {
  // Initialization completed successfully, log the adapter status:
  std::map<std::string, firebase::gma::AdapterStatus> adapter_status_map =
      firebase::gma::GetInitializationStatus().GetAdapterStatusMap();

  for (auto it = adapter_status_map.begin(); it != adapter_status_map.end(); ++it) {
    std::string adapter_class_name = it->first;
    firebase::gma::AdapterStatus adapter_status = it->second;
    printf(“adapter: %s \t description: %s \t is_initialized: %d latency: %d\n”,
       adapter_class_name.c_str(),
       adapter_status.description().c_str(),
       adapter_status.is_initialized(),
       adpater_status.latency());
  }
} else {
  // Handle initialization error.
}

Подробнее о работе с объектами Future можно узнать в статье Как использовать объекты Future для отслеживания статуса выполнения вызовов методов.

Проверьте значение параметра adNetworkClassName.

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

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

firebase::Future<AdResult> load_ad_future = banner_view.loadAd(ad_request);

// In a game loop, monitor the ad load status
if (load_ad_future.status() == firebase::kFutureStatusComplete &&
    load_ad_future.error() == firebase::gma::kAdErrorCodeNone) {
  const AdResult* ad_result = load_ad_future.result();
  printf(“Loaded ad with adapter class name: %s\n”,
    ad_result->adapter_class_name().c_str());
} else {
  // Handle the load ad error.
}

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

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

Google Mobile Ads C++ SDK содержит реализации Android и iOS SDK для медиации. Поэтому дальнейшая настройка, в том числе установка адаптеров медиации, зависит от платформы (Android или iOS). Подробнее о том, как выбрать сети в Google Mobile Ads Android SDK и как выбрать сети в Google Mobile Ads iOS SDK…