Это руководство предназначено для издателей, которые хотят монетизировать приложение на 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 и возвращает 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():
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 предлагает несколько форматов объявлений, чтобы вы могли выбрать тот, который лучше всего подходит для вашего приложения.
Баннер
Прямоугольные объявления, которые показываются в верхней или нижней части экрана. Баннеры остаются на экране, пока пользователь взаимодействует с приложением, и могут автоматически обновляться через определенные промежутки времени. Если вы только начинаете работать с мобильной рекламой, рекомендуем начать именно с них.
Межстраничное объявление
Полноэкранные объявления, которые закрывают интерфейс приложения, пока пользователь не закроет их. Их лучше всего показывать в естественные паузы в работе приложения, например между уровнями игры или сразу после выполнения задачи.
Как размещать межстраничные объявления
Бонус предоставлен
Пользователи получают бонусы за просмотр коротких видео, взаимодействие с интерактивной рекламой игр и ответы на вопросы. Используется для монетизации бесплатных приложений.