Начните работу с 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. Включите пользовательские метрики , чтобы 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 , загрузите Firebase C++ SDK , а затем разархивируйте его в выбранный вами каталог.

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