Это руководство предназначено для издателей, которые хотят монетизировать приложение 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, выполнив следующие шаги:
Войдите в систему или зарегистрируйте учетную запись AdMob.
Зарегистрируйте свое приложение в 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 .
В файле
gradle.properties
вашего проекта укажите расположение распакованного SDK:systemProp.firebase_cpp_sdk.dir=FULL_PATH_TO_SDK
В файл
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"
В файл 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 }
Добавьте в файл
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}")
Синхронизируйте свое приложение, чтобы убедиться, что все зависимости имеют необходимые версии.
iOS
Действия, описанные в этом разделе, представляют собой пример добавления Google Mobile Ads C++ SDK в ваш проект iOS.
Получите CocoaPods версии 1 или более поздней, выполнив:
sudo gem install cocoapods --pre
Добавьте модуль Google Mobile Ads из распакованного SDK.
Создайте Podfile, если у вас его еще нет:
cd APP_DIRECTORY
pod init
Добавьте в свой 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'
Установите модули, затем откройте файл
.xcworkspace
в Xcode.pod install
open APP.xcworkspace
Добавьте в проект следующие фреймворки из 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 предлагает множество различных форматов рекламы, поэтому вы можете выбрать тот, который лучше всего подходит для пользователей вашего приложения.
Баннер
Прямоугольные рекламные объявления, которые появляются в верхней или нижней части экрана устройства. Баннеры остаются на экране, пока пользователи взаимодействуют с приложением, и могут автоматически обновляться через определённый промежуток времени. Если вы новичок в мобильной рекламе, они станут отличным стартом.
Интерстициальный
Полноэкранные объявления, которые закрывают интерфейс приложения до тех пор, пока пользователь не закроет их. Их лучше всего использовать во время естественных пауз в работе приложения, например, между уровнями игры или сразу после завершения задачи.
Внедрение межстраничной рекламы
Награжден
Реклама, вознаграждающая пользователей за просмотр коротких видеороликов и взаимодействие с интерактивными рекламными материалами и опросами. Используется для монетизации бесплатных приложений.