Начать


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

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

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

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

Предварительные требования

Android

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

iOS

  • Используйте Xcode 13 или более поздней версии.
  • Целевая платформа: iOS 10.0 или выше

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

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

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

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

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

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

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

Android

Мы рекомендуем использовать CMake, но инструкции по использованию ndk-build можно найти в нашем общем руководстве по началу работы с Firebase C++ SDK , чтобы связать libfirebase_app.a и libfirebase_gma.a с вашим приложением.

  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

В этом разделе описан пример того, как добавить SDK Google Mobile Ads на C++ в ваш 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 для вашего приложения.

Android

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

iOS

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

Инициализируйте SDK мобильной рекламы Google.

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

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

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

Выберите формат объявления

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

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

Внедрить баннерную рекламу

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

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

Внедрить межстраничную рекламу

Награжден

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

Внедрить рекламу с вознаграждением.