Это руководство предназначено для издателей, которые хотят монетизировать приложение на C++ с помощью AdMob без использования Firebase. Если вы планируете использовать Firebase в своем приложении, ознакомьтесь с версией этого руководства для AdMob с Firebase.
Интеграция Google Mobile Ads C++ SDK в приложение — это первый шаг к показу медийных объявлений и получению дохода. После интеграции 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
- Используйте 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 не зависит от платформы, но требует конфигураций библиотек для конкретной платформы.
Android
Мы рекомендуем использовать CMake, но вы можете найти инструкции для ndk-build в нашем общем руководстве по началу работы с Firebase C++ SDK, чтобы связать libfirebase_app.a и libfirebase_gma.a с вашим приложением.
В файле
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_DIRECTORYpod initДобавьте в Podfile поды для Google Mobile Ads C++ SDK, Google User Messaging Platform SDK и минимального Firebase core SDK (требуется для GMA C++ SDK):
pod 'Firebase/CoreOnly' pod 'Google-Mobile-Ads-SDK' pod 'GoogleUserMessagingPlatform'Установите pod-файлы и откройте файл
.xcworkspaceв Xcode.pod installopen APP.xcworkspaceДобавьте в проект следующие фреймворки из Firebase C++ SDK:
xcframeworks/firebase.xcframeworkxcframeworks/firebase_gma.xcframework
Готово! Ваше приложение C++ настроено на использование Google Mobile Ads C++ SDK без других сервисов Firebase.
Как настроить идентификатор приложения AdMob
Android
Выполните шаг 3 из раздела Настройка приложения в руководстве по рекламному SDK Mobile Ads для Android, а затем вернитесь на эту страницу.
iOS
Выполните шаг Обновите файл Info.plist, как описано в руководстве по рекламному SDK для мобильных устройств для iOS, а затем вернитесь на эту страницу.
Инициализируйте Google Mobile Ads SDK
Перед загрузкой объявлений приложение должно инициализировать Google Mobile Ads C++ SDK, вызвав firebase::gma::Initialize(). После этого SDK будет инициализирован, а по завершении инициализации (или по истечении 30-секундного тайм-аута) будет выполнен firebase::Future. Это нужно сделать только один раз, желательно при запуске приложения.
Объявления могут быть предварительно загружены 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():
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 – "Завершено", а код ошибки – 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 предлагает разные форматы объявлений, чтобы вы могли выбрать наиболее подходящий для вашего приложения.
Баннер
Прямоугольные объявления, которые показываются в верхней или нижней части экрана. Баннеры остаются на экране, пока пользователь взаимодействует с приложением, и могут автоматически обновляться через определенные промежутки времени. Если вы только начинаете работать с мобильной рекламой, рекомендуем начать именно с них.
Межстраничное объявление
Полноэкранные объявления, которые закрывают интерфейс приложения, пока пользователь не закроет их. Их лучше всего использовать в естественных паузах в работе приложения, например между уровнями игры или сразу после выполнения задачи.
Как размещать межстраничные объявления
Бонус предоставлен
Пользователи получают бонусы за просмотр коротких видео, взаимодействие с интерактивной рекламой игр и ответы на вопросы. Используется для монетизации бесплатных приложений.