Это краткое руководство предназначено для издателей и разработчиков, которые хотят использовать AdMob для монетизации приложений, созданных на базе Firebase. Если вы не планируете использовать Firebase в своём приложении, ознакомьтесь с отдельным руководством AdMob .
Если вы еще этого не сделали, узнайте обо всех преимуществах совместного использования AdMob , Firebase и Google Analytics .
Если вы впервые знакомитесь с этим руководством, мы рекомендуем вам загрузить и использовать тестовое приложение Google Mobile Ads C++ SDK .
Прежде чем начать
- Если у вас еще нет проекта Firebase и приложения Firebase, следуйте руководству по началу работы с Firebase: Добавьте Firebase в свой проект C++ . 
- Убедитесь, что Google Analytics включен в вашем проекте Firebase: - Если вы создаете новый проект Firebase, включите Google Analytics во время процесса создания проекта. 
- Если у вас есть существующий проект Firebase, в котором не включен Google Analytics , вы можете включить Google Analytics на вкладке «Интеграции» вашего - > Настройки проекта . 
 
Шаг 1: Настройте приложение в своем аккаунте AdMob
- Зарегистрируйте каждый вариант вашего приложения на платформе как приложение AdMob . - Войдите в систему AdMob или зарегистрируйте учетную запись . 
- Зарегистрируйте каждый вариант вашего приложения для каждой платформы в AdMob . На этом этапе будет создано приложение AdMob с уникальным идентификатором приложения AdMob , который понадобится вам далее в этом руководстве. 
 - Вам будет предложено добавить Mobile Ads SDK в ваше приложение. Подробные инструкции по этой задаче см. далее в этом руководстве. 
- Свяжите каждое из ваших приложений AdMob с соответствующим приложением Firebase. - Этот шаг необязателен, но настоятельно рекомендуется. Узнайте больше о преимуществах включения пользовательских показателей и подключения приложений AdMob к Firebase. - Для каждого варианта платформы выполните следующие два шага на панели приложений вашей учетной записи AdMob : - Включите функцию «Пользовательские показатели» , чтобы AdMob мог обрабатывать и отображать подобранные аналитические данные в вашем аккаунте AdMob . Это также обязательная настройка для подключения вашего приложения AdMob к Firebase. 
- Свяжите свое приложение AdMob с существующим проектом Firebase и соответствующим приложением Firebase. - Убедитесь, что вы ввели то же имя пакета (Android) или идентификатор пакета (iOS), что и для вашего приложения Firebase. Найдите имя пакета или идентификатор пакета вашего приложения Firebase на карточке «Ваши приложения» вашего приложения. - > Настройки проекта . 
 
Шаг 2: Добавьте идентификатор приложения AdMob в свое приложение.
Андроид
 Добавьте идентификатор приложения AdMob в файл AndroidManifest.xml вашего приложения, добавив тег <meta-data> , как показано ниже.
<manifest> <application> <!-- Sample AdMob App ID: ca-app-pub-3940256099942544~3347511713 --> <meta-data android:name="com.google.android.gms.ads.APPLICATION_ID" android:value="ADMOB_APP_ID"/> </application> </manifest>
iOS
 В файле Info.plist вашего приложения добавьте ключ GADApplicationIdentifier со строковым значением идентификатора вашего приложения AdMob .
Вы можете сделать это изменение программно:
<!-- Sample AdMob App ID: ca-app-pub-3940256099942544~1458002511 --> <key>GADApplicationIdentifier</key> <string>ADMOB_APP_ID</string>
Или отредактируйте его в редакторе списка свойств:
Шаг 3: Добавьте Google Mobile Ads SDK
 Поскольку Google Mobile Ads C++ SDK находится в пространстве имен firebase::gma , загрузите Firebase C++ SDK , а затем распакуйте его в каталог по вашему выбору.
Firebase C++ SDK не привязан к конкретной платформе, но требует конфигураций библиотек, специфичных для данной платформы.
Андроид
- В файле - gradle.propertiesвашего проекта укажите расположение распакованного SDK:- systemProp.firebase_cpp_sdk.dir=FULL/PATH/TO/SDK 
- В файл - settings.gradleвашего проекта добавьте следующее содержимое:- def firebase_cpp_sdk_dir = System.getProperty('firebase_cpp_sdk.dir') gradle.ext.firebase_cpp_sdk_dir = "$firebase_cpp_sdk_dir" includeBuild "$firebase_cpp_sdk_dir" 
- В файл Gradle вашего модуля (уровня приложения) (обычно - app/build.gradle) добавьте следующее содержимое, которое включает зависимость библиотеки для Google Mobile Ads C++ SDK.- android.defaultConfig.externalNativeBuild.cmake { arguments "-DFIREBASE_CPP_SDK_DIR=$gradle.firebase_cpp_sdk_dir" } # Add the dependency for the Google Mobile Ads C++ SDK apply from: "$gradle.firebase_cpp_sdk_dir/Android/firebase_dependencies.gradle" firebaseCpp.dependencies { gma } 
- Добавьте в файл - CMakeLists.txtвашего проекта следующее содержимое.- # Add Firebase libraries to the target using the function from the SDK. add_subdirectory(${FIREBASE_CPP_SDK_DIR} bin/ EXCLUDE_FROM_ALL) # Add the Google Mobile Ads C++ SDK. # The Firebase C++ library `firebase_app` is required, # and it must always be listed last. set(firebase_libs firebase_gma firebase_app ) target_link_libraries(${target_name} "${firebase_libs}") 
- Синхронизируйте свое приложение, чтобы убедиться, что все зависимости имеют необходимые версии. 
Всё готово! Ваше приложение C++ настроено на использование Google Mobile Ads C++ SDK.
iOS
Действия, описанные в этом разделе, представляют собой пример добавления Google Mobile Ads C++ SDK в ваш проект iOS.
- Получите CocoaPods версии 1 или более поздней, выполнив: - sudo gem install cocoapods --pre
- Добавьте модуль Google Mobile Ads из распакованного SDK. - Создайте Podfile, если у вас его еще нет: - cd YOUR_APP_DIRECTORY- pod init
- Добавьте в свой Podfile модуль для Google Mobile Ads C++ SDK: - pod 'Google-Mobile-Ads-SDK'
- Установите модуль, затем откройте файл - .xcworkspaceв Xcode.- pod install- open YOUR_APP.xcworkspace
- Добавьте в проект следующие фреймворки из Firebase C++ SDK: -  xcframeworks/firebase.xcframework
-  xcframeworks/firebase_gma.xcframework
 
-  
 
Всё готово! Ваше приложение C++ настроено на использование Google Mobile Ads C++ SDK.
Шаг 4: Инициализируйте Google Mobile Ads SDK
 Перед загрузкой рекламы инициализируйте Mobile Ads SDK, вызвав firebase::gma::Initialize() .
 Этот вызов возвращает firebase::Future , который завершается после завершения инициализации (или по истечении 30-секундного тайм-аута). Вызывайте этот метод только один раз и как можно раньше, в идеале — при запуске приложения.
 Вот пример вызова Initialize() : 
Андроид
// Initialize the Google Mobile Ads library firebase::InitResult result; Future<AdapterInitializationStatus> future = firebase::gma::Initialize(jni_env, j_activity, &result); if (result != kInitResultSuccess) { // Initialization immediately failed, most likely due to a missing dependency. // Check the device logs for more information. return; } // Monitor the status of the future. // See "Use a Future to monitor the completion status of a method call" below. if (future.status() == firebase::kFutureStatusComplete && future.error() == firebase::gma::kAdErrorCodeNone) { // Initialization completed. } else { // Initialization on-going, or an error has occurred. }
iOS
// Initialize the Google Mobile Ads library. firebase::InitResult result; Future<AdapterInitializationStatus> future = firebase::gma::Initialize(&result); if (result != kInitResultSuccess) { // Initialization immediately failed, most likely due to a missing dependency. // Check the device logs for more information. return; } // Monitor the status of the future. // See "Use a Future to monitor the completion status of a method call" below. if (future.status() == firebase::kFutureStatusComplete && future.error() == firebase::gma::kAdErrorCodeNone) { // Initialization completed. } else { // Initialization on-going, or an error has occurred. }
 Используйте Future для отслеживания статуса завершения вызова метода
 Future предоставляет вам возможность определить статус завершения вызовов асинхронных методов.
 Например, когда ваше приложение вызывает firebase::gma::Initialize() , создаётся и возвращается новый firebase::Future . Затем ваше приложение может опрашивать status() объекта Future , чтобы определить, завершена ли инициализация. После завершения инициализации ваше приложение может вызвать result() , чтобы получить результирующий объект AdapterInitializationStatus .
 Методы, возвращающие Future имеют соответствующий метод «последнего результата», который приложения могут использовать для получения самого последнего Future для заданного действия. Например, firebase::gma::Initialize() есть соответствующий метод firebase::gma::InitializeLastResult() , который возвращает Future , который ваше приложение может использовать для проверки статуса последнего вызова firebase::gma::Initialize() .
 Если статус Future — Complete и его код ошибки — firebase::gma::kAdErrorCodeNone , то операция завершена успешно.
 Вы также можете зарегистрировать обратные вызовы, которые будут вызываться после завершения Future . В некоторых случаях обратный вызов будет выполняться в другом потоке, поэтому убедитесь, что ваш код потокобезопасен. В этом фрагменте кода для обратного вызова используется указатель на функцию: 
// Registers the OnCompletion callback. user_data is a pointer that is passed verbatim
// to the callback as a void*. This allows you to pass any custom data to the callback
// handler. In this case, the app has no data, so you must pass nullptr.
firebase::gma::InitializeLastResult().OnCompletion(OnCompletionCallback,
  /*user_data=*/nullptr);
// The OnCompletion callback function.
static void OnCompletionCallback(
  const firebase::Future<AdapterInitializationStatus>& future, void* user_data) {
  // Called when the Future is completed for the last call to firebase::gma::Initialize().
  // If the error code is firebase::gma::kAdErrorCodeNone,
  // then the SDK has been successfully initialized.
  if (future.error() == firebase::gma::kAdErrorCodeNone) {
    // success!
  } else {
    // failure.
  }
}
Шаг 5: Выберите формат рекламы для внедрения в ваше приложение
AdMob предлагает множество различных форматов рекламы, поэтому вы можете выбрать тот, который лучше всего подходит для пользовательского опыта вашего приложения. Нажмите кнопку с названием формата рекламы, чтобы ознакомиться с подробными инструкциями по его использованию в документации AdMob .
Баннер
Прямоугольные объявления, которые появляются в верхней или нижней части экрана устройства.
Рекламные баннеры остаются на экране, пока пользователи взаимодействуют с приложением, и могут автоматически обновляться через определённый промежуток времени. Если вы новичок в мобильной рекламе, они — отличная отправная точка.
Внедрение баннерной рекламыИнтерстициальный
Полноэкранная реклама, которая закрывает интерфейс приложения до тех пор, пока пользователь ее не закроет.
Полосатая реклама лучше всего используется во время естественных пауз в работе приложения, например, между уровнями игры или сразу после завершения задачи.
Внедрение межстраничной рекламыНагражден
Реклама, которая вознаграждает пользователей за просмотр коротких видеороликов и взаимодействие с интерактивными рекламными объявлениями и опросами
Реклама с вознаграждением (или «основанная на вознаграждении») может помочь монетизировать пользователей бесплатных игр.
Внедрение объявлений с вознаграждением
Другие темы, представляющие интерес
Просмотр пользовательских показателей и аналитических данных
После инициализации Mobile Ads SDK автоматически начинает регистрировать аналитические события и свойства пользователей в вашем приложении. Вы можете просматривать эти данные без добавления дополнительного кода в приложение или добавления рекламы. Вот где можно посмотреть эти аналитические данные:
- На карточке показателей пользователя вашей учетной записи AdMob (панель управления «Главная» или «Приложения» ) вы можете просматривать отобранные показатели пользователя , полученные на основе собранных аналитических данных, такие как средняя продолжительность сеанса, ARPU и удержание. 
- На панели Analytics консоли Firebase вы можете просматривать агрегированную статистику и сводки ключевых показателей . Добавив Firebase SDK для Google Analytics , вы также сможете отмечать конверсии в рекламных кампаниях и создавать пользовательские аудитории в консоли Firebase . 
 Обратите внимание, что для более точного представления показателей ARPU и ARPPU вы можете включить данные из пользовательского события аналитики, называемого ecommerce_purchase в расчет дохода для этих показателей ( узнайте, как ).
(Необязательно) Используйте дополнительные функции Google Analytics и Firebase
Воспользуйтесь дополнительными возможностями и функциями для улучшения монетизации приложения и вовлеченности пользователей:
- Добавьте и используйте Firebase SDK для Google Analytics - Реализуйте пользовательскую регистрацию событий в своем приложении. 
- Отметьте конверсии для индивидуальных рекламных кампаний . 
- Включайте данные о событиях - ecommerce_purchaseв расчет доходов для показателей ARPU и ARPPU .
 - Для получения более подробной информации посетите руководство по использованию Google Analytics и Firebase с приложениями AdMob . 
- Используйте другие продукты Firebase в своем приложении - После добавления Firebase SDK для Google Analytics используйте другие продукты Firebase для оптимизации рекламы в вашем приложении. - Remote Config позволяет вам изменять поведение и внешний вид вашего приложения без публикации обновления приложения, бесплатно и для неограниченного числа активных пользователей в день. 
- A/B Testing дает вам возможность тестировать изменения в пользовательском интерфейсе, функциях или кампаниях по привлечению клиентов вашего приложения, чтобы узнать, оказывают ли они влияние на ваши ключевые показатели (такие как доход и удержание), прежде чем внедрять изменения повсеместно.