Начало работы с AdMob в проекте C++

рекомендуем использовать SDK AdMob для iOS и Android.


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

Если вы ещё не знаете, какие преимущества дает совместное использование AdMob, Firebase и Google Analytics, рекомендуем ознакомиться с ними.

Если вы впервые работаете с этим руководством, рекомендуем скачать тестовое приложение Google Mobile Ads C++ SDK и выполнять инструкции на его примере.

Подготовка

  • Если у вас ещё нет проекта и приложения Firebase, выполните инструкции из руководства по началу работы с Firebase: Как добавить Firebase в проект C++.

  • Убедитесь, что в проекте Firebase включена Google Analytics:

    • Если вы создаете новый проект Firebase, включите Google Analytics в процессе его создания.

    • Если у вас есть проект Firebase, в котором не включена Google Analytics, вы можете включить Google Analytics на вкладке Integrations (Интеграция) в разделе > Project settings (Настройки проекта).

Шаг 1. Настройте приложение в аккаунте AdMob

  1. Зарегистрируйте каждую версию приложения для разных платформ как приложение AdMob.

    1. Войдите или зарегистрируйтесь в аккаунте AdMob.

    2. Зарегистрируйте каждую версию приложения для разных платформ в AdMob. В результате будет создано приложение AdMob с уникальным AdMob идентификатором, который понадобится вам в дальнейшем.

    Вам будет предложено добавить в приложение SDK Mobile Ads. Подробные инструкции вы найдете далее в этом руководстве.

  2. Свяжите каждое из AdMob приложений с соответствующим приложением Firebase.

    Этот шаг необязателен, но настоятельно рекомендуется. Подробнее о преимуществах включения пользовательских показателей и связывания приложений AdMob с Firebase…

    Для каждого варианта платформы выполните следующие два шага на панели управления Приложения в аккаунте AdMob:

    1. Включите пользовательские показатели, чтобы сервис "AdMob" мог обрабатывать и показывать в вашем аккаунте AdMob данные аналитики. Это также необходимо, чтобы связать приложение AdMob с Firebase.

    2. Свяжите приложение AdMob с существующим проектом и приложением Firebase.

      Убедитесь, что вы указали то же название пакета (Android) или идентификатор пакета (iOS), что и для приложения Firebase. Название пакета или идентификатор пакета приложения Firebase можно найти на карточке Ваши приложения в разделе > Настройки проекта.

Шаг 2. Добавьте идентификатор приложения AdMob в свое приложение

Android

Добавьте идентификатор приложения 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 не зависит от платформы, но требует конфигураций библиотек для конкретной платформы.

Android

  1. В файле gradle.properties проекта укажите местоположение распакованного SDK:

    systemProp.firebase_cpp_sdk.dir=FULL/PATH/TO/SDK
  2. Добавьте в файл 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"
  3. Добавьте в файл 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
    }
  4. Добавьте в файл 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}")
  5. Синхронизируйте приложение, чтобы убедиться, что для всех зависимостей есть необходимые версии.

Готово! Ваше приложение C++ настроено на использование Google Mobile Ads C++ SDK.

iOS

В этом разделе приведен пример того, как добавить Google Mobile Ads C++ SDK в проект iOS.

  1. Чтобы получить CocoaPods версии 1 или более поздней, выполните следующую команду:

    sudo gem install cocoapods --pre
  2. Добавьте pod-файл Google Mobile Ads из распакованного SDK.

    1. Если у вас нет файла Podfile, создайте его:

      cd YOUR_APP_DIRECTORY
      pod init
    2. Добавьте в Podfile пакет Google Mobile Ads C++ SDK:

      pod 'Google-Mobile-Ads-SDK'
    3. Установите pod-файл и откройте файл .xcworkspace в Xcode.

      pod install
      open YOUR_APP.xcworkspace
    4. Добавьте в проект следующие фреймворки из Firebase C++ SDK:

      • xcframeworks/firebase.xcframework
      • xcframeworks/firebase_gma.xcframework

Готово! Ваше приложение C++ настроено на использование Google Mobile Ads C++ SDK.

Шаг 4. Инициализируйте Google Mobile Ads SDK

Прежде чем загружать объявления, инициализируйте SDK Mobile Ads, вызвав метод firebase::gma::Initialize().

Этот вызов возвращает firebase::Future, который завершается после окончания инициализации (или по истечении 30-секундного тайм-аута). Вызовите этот метод только один раз и как можно раньше, в идеале – при запуске приложения.

Пример вызова Initialize():

Android

// 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 – "Завершено", а код ошибки – 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.

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

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

Как реализовать баннеры

Межстраничное

Полноэкранные объявления, которые закрывают интерфейс приложения, пока пользователь не закроет их.

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

Как размещать межстраничные объявления

С вознаграждением

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

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

Как реализовать объявления с вознаграждением

Другие интересные темы

Узнайте, как ещё можно отслеживать показатели и интегрировать функции Firebase с AdMob.

Просмотр пользовательских показателей и аналитических данных

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

Чтобы показатели ARPU и ARPPU были более точными, вы можете включить в расчет дохода данные из специального события ecommerce_purchase. Подробнее о том, как это сделать…

(Необязательно) Используйте дополнительные функции Google Analytics и Firebase

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