Это руководство предназначено для издателей, которые хотят монетизировать приложение на 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 с уникальным идентификатором приложения 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 pod из распакованного SDK.
Создайте файл Podfile, если у вас его ещё нет:
cd APP_DIRECTORYpod initДобавьте в Podfile пакеты SDK Google Mobile Ads C++, Google User Messaging Platform SDK и минимальный основной пакет SDK Firebase (требуется для GMA C++ SDK):
pod 'Firebase/CoreOnly' pod 'Google-Mobile-Ads-SDK' pod 'GoogleUserMessagingPlatform'Установите pods, а затем откройте файл
.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 из раздела Настройте приложение в руководстве по 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():
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 доступно несколько форматов объявлений, поэтому вы можете выбрать тот, который лучше всего подходит для вашего приложения.
Баннер
Прямоугольные объявления, которые показываются в верхней или нижней части экрана. Баннеры остаются на экране, пока пользователи работают с приложением, и могут автоматически обновляться через определенные промежутки времени. Если вы только начинаете работать с мобильной рекламой, это отличный вариант.
Межстраничное объявление
Полноэкранные объявления, которые закрывают интерфейс приложения, пока пользователь не закроет их. Их лучше всего показывать при естественных паузах в работе приложения, например между уровнями в игре или сразу после выполнения задачи.
Как размещать межстраничные объявления
Бонус предоставлен
Пользователи получают бонусы за просмотр коротких видео, взаимодействие с интерактивной рекламой игр и ответы на вопросы. Используется для монетизации бесплатных приложений.