Начать


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

Интеграция C++ SDK Google Mobile Ads в приложение — это первый шаг к показу рекламы и получению дохода. После интеграции SDK вы можете выбрать формат рекламы, например, полноэкранную или с вознаграждением, и следовать инструкциям по его реализации.

Google Mobile Ads C++ SDK является оболочкой для Google Mobile Ads SDK для iOS и Android и доступен только на этих платформах. Google Mobile Ads C++ SDK использует конструкции Firebase C++ для поддержки асинхронных операций, поэтому он находится в пространстве имён firebase::gma .

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

Предпосылки

Андроид

  • Используйте Android Studio 3.2 или выше.
  • Убедитесь, что файл сборки вашего приложения использует следующие значения:
    • minSdkVersion 16 или выше
    • compileSdkVersion 28 или выше

iOS

  • Используйте Xcode 13 или выше
  • Целевая версия iOS 10.0 или выше

Настройте свое приложение в своем аккаунте AdMob

Зарегистрируйте свое приложение как приложение AdMob, выполнив следующие шаги:

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

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

Установите Google Mobile Ads C++ SDK

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

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

Андроид

Мы рекомендуем использовать CMake, но инструкции по ndk-build, чтобы связать libfirebase_app.a и libfirebase_gma.a с вашим приложением, можно найти в нашем общем руководстве по началу работы с 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. Синхронизируйте свое приложение, чтобы убедиться, что все зависимости имеют необходимые версии.

iOS

Действия, описанные в этом разделе, представляют собой пример добавления Google Mobile Ads C++ SDK в ваш проект iOS.

  1. Получите CocoaPods версии 1 или более поздней, выполнив:

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

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

      cd APP_DIRECTORY
      pod init
    2. Добавьте в свой Podfile модули для Google Mobile Ads C++ SDK, Google User Messaging Platform SDK и минимального основного Firebase SDK (требуется для GMA C++ SDK):

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

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

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

Всё готово! Ваше приложение C++ настроено на использование Google Mobile Ads C++ SDK без каких-либо других служб Firebase.

Настройте идентификатор приложения AdMob вашего приложения

Андроид

Выполните шаг 3 из раздела «Настройка приложения» , как описано в руководстве Mobile Ads SDK для Android , а затем вернитесь на эту страницу.

iOS

Выполните шаг «Обновите файл Info.plist» , как описано в руководстве Mobile Ads SDK для iOS, а затем вернитесь на эту страницу.

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

Перед загрузкой рекламы ваше приложение должно инициализировать Google Mobile Ads C++ SDK, вызвав метод firebase::gma::Initialize() , который инициализирует SDK и завершает firebase::Future после завершения инициализации (или по истечении 30-секундного тайм-аута). Это необходимо сделать только один раз, в идеале при запуске приложения.

Рекламные объявления могут быть предварительно загружены с помощью Google Mobile Ads C++ SDK или SDK партнёров-посредников при вызове Initialize() . Если вам необходимо получить согласие пользователей в Европейской экономической зоне (ЕЭЗ), установить какие-либо флаги, специфичные для запроса (например, tag_for_child_directed_treatment или tag_for_under_age_of_consent ), или выполнить другие действия перед загрузкой рекламы, убедитесь, что вы сделали это, вызвав firebase::gma::SetRequestConfiguration() перед инициализацией Google Mobile Ads C++ SDK. Подробнее см. в нашем руководстве по таргетингу .

Вот пример вызова 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.
  }
}

Выберите формат рекламы

Пакет Google Mobile Ads C++ SDK импортирован, и вы готовы к размещению рекламы. AdMob предлагает множество различных форматов рекламы, поэтому вы можете выбрать тот, который лучше всего подходит для пользователей вашего приложения.

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

Внедрение баннерной рекламы

Интерстициальный

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

Внедрение межстраничной рекламы

Награжден

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

Внедрение объявлений с вознаграждением