Catch up on highlights from Firebase at Google I/O 2023. Learn more

Начните работу с AdMob в своем проекте C++

Это краткое руководство предназначено для издателей и разработчиков, которые хотят использовать 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.

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

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

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

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

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

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

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

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

    2. Свяжите свое приложение 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

Поскольку SDK Google Mobile Ads C++ находится в пространстве имен firebase::gma , загрузите SDK Firebase C++ и разархивируйте его в любой каталог по вашему выбору.

Firebase C++ SDK не зависит от платформы, но для него требуются конфигурации библиотек для конкретной платформы.

Андроид

  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 ) добавьте следующий контент, который включает зависимость библиотеки для SDK Google Mobile Ads C++.

    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. Добавьте модуль Google Mobile Ads из разархивированного SDK.

    1. Создайте подфайл, если у вас его еще нет:

      cd YOUR_APP_DIRECTORY
      pod init
    2. В свой подфайл добавьте модуль для Google Mobile Ads C++ SDK:

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

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

      • 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 завершено и его код ошибки — 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 автоматически начинает регистрировать события аналитики и свойства пользователя из вашего приложения. Вы можете просматривать эти данные без добавления дополнительного кода в приложение или внедрения рекламы. Вот где вы можете увидеть эти аналитические данные:

Обратите внимание, что для лучшего представления показателей ARPU и ARPPU вы можете включить данные из пользовательского события аналитики под названием ecommerce_purchase в расчет дохода для этих показателей ( узнайте, как это сделать ).

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

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

  • Добавьте и используйте Firebase SDK для Google Analytics

    Дополнительную информацию см. в руководстве по использованию Google Analytics и Firebase с приложениями AdMob .

  • Используйте другие продукты Firebase в своем приложении

    После добавления Firebase SDK для Google Analytics используйте другие продукты Firebase для оптимизации рекламы в своем приложении.

    • Remote Config позволяет вам изменить поведение и внешний вид вашего приложения без публикации обновлений приложения бесплатно для неограниченного количества активных пользователей в день.

    • A/B-тестирование дает вам возможность тестировать изменения в пользовательском интерфейсе, функциях или кампаниях по взаимодействию с вашим приложением, чтобы узнать, влияют ли они на ваши ключевые показатели (такие как доход и удержание), прежде чем широко внедрять изменения.