Начните работу с AdMob в своем проекте C++.

Рассмотрите возможность использования SDK для iOS и Android от AdMob.


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

Если вы еще этого не сделали, узнайте обо всех преимуществах совместного использования AdMob , Firebase и Google Analytics .

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

Прежде чем начать

  • Если у вас еще нет проекта Firebase и приложения Firebase, следуйте руководству по началу работы с Firebase: Добавьте Firebase в свой проект C++ .

  • Убедитесь, что Google Analytics включен в вашем проекте Firebase:

    • При создании нового проекта Firebase включите Google Analytics в процессе создания проекта.

    • Если у вас есть существующий проект Firebase, в котором не включена Google Analytics , вы можете включить Google Analytics на вкладке «Интеграции» вашего проекта. > Настройки проекта .

Шаг 1: Настройте приложение в своем аккаунте AdMob

  1. Зарегистрируйте каждый вариант вашего приложения на каждой платформе как приложение AdMob .

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

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

    Вам будет предложено добавить SDK Mobile Ads в ваше приложение. Подробные инструкции по выполнению этой задачи вы найдете далее в этом руководстве.

  2. Свяжите каждое из ваших приложений AdMob с соответствующим приложением Firebase.

    Этот шаг необязателен, но настоятельно рекомендуется. Узнайте больше о преимуществах включения пользовательских метрик и интеграции ваших приложений AdMob с Firebase.

    Для каждого варианта платформы выполните следующие два шага на панели управления «Приложения» в вашем аккаунте AdMob :

    1. Включите функцию «Пользовательские метрики» , чтобы AdMob мог обрабатывать и отображать отобранные аналитические данные в вашем аккаунте AdMob . Эта настройка также необходима для связи вашего приложения AdMob с Firebase.

    2. Свяжите ваше приложение AdMob с существующим проектом Firebase и соответствующим приложением Firebase.

      Убедитесь, что вы ввели то же имя пакета (Android) или идентификатор пакета (iOS), что и для вашего приложения Firebase. Найдите имя пакета или идентификатор пакета вашего приложения Firebase в карточке «Ваши приложения» вашего приложения . > Настройки проекта .

Шаг 2: Добавьте идентификатор вашего приложения AdMob в ваше приложение.

Android

Добавьте идентификатор вашего приложения AdMob в файл AndroidManifest.xml , добавив тег <meta-data> , как показано ниже.

<manifest>
    <application>
        <!-- Sample AdMob App ID: ca-app-pub-3940256099942544~3347511713 -->
        <meta-data
            android:name="com.google.android.gms.ads.APPLICATION_ID"
            android:value="ADMOB_APP_ID"/>
    </application>
</manifest>

iOS

В файл Info.plist вашего приложения добавьте ключ GADApplicationIdentifier со строковым значением, равным идентификатору вашего приложения AdMob .

Это изменение можно внести программным способом:

<!-- Sample AdMob App ID: ca-app-pub-3940256099942544~1458002511 -->
<key>GADApplicationIdentifier</key>
<string>ADMOB_APP_ID</string>

Или отредактируйте его в редакторе списка свойств:

Редактор списка объектов недвижимости

Шаг 3: Добавьте SDK для мобильной рекламы Google.

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

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

Android

  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. Синхронизируйте приложение, чтобы убедиться, что все зависимости имеют необходимые версии.

Всё готово! Ваше приложение на C++ настроено для использования Google Mobile Ads C++ SDK.

iOS

В этом разделе описан пример того, как добавить SDK Google Mobile Ads на C++ в ваш iOS-проект.

  1. Для получения CocoaPods версии 1 или более поздней выполните следующую команду:

    sudo gem install cocoapods --pre
  2. Добавьте модуль Google Mobile Ads из распакованного SDK.

    1. Создайте файл Podfile, если у вас его ещё нет:

      cd YOUR_APP_DIRECTORY
      pod init
    2. Добавьте в свой Podfile модуль для Google Mobile Ads C++ SDK:

      pod 'Google-Mobile-Ads-SDK'
    3. Установите Pod-пак, затем откройте файл .xcworkspace в Xcode.

      pod install
      open YOUR_APP.xcworkspace
    4. Добавьте в проект следующие фреймворки из Firebase C++ SDK:

      • xcframeworks/firebase.xcframework
      • xcframeworks/firebase_gma.xcframework

Всё готово! Ваше приложение на C++ настроено для использования Google Mobile Ads C++ SDK.

Шаг 4: Инициализация SDK для мобильной рекламы Google

Перед загрузкой рекламы инициализируйте SDK Mobile Ads , вызвав firebase::gma::Initialize() .

Этот вызов возвращает firebase::Future , который завершается после окончания инициализации (или по истечении 30-секундного таймаута). Вызывайте этот метод только один раз и как можно раньше, в идеале при запуске приложения.

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

Шаг 5: Выберите формат рекламы для внедрения в ваше приложение.

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

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

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

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

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

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

Межстраничные рекламные объявления лучше всего использовать в естественных паузах в процессе работы приложения, например, между уровнями игры или сразу после завершения задачи.

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

Награжден

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

Реклама с вознаграждением (или «на основе вознаграждения») может помочь монетизировать пользователей бесплатных игр.

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

Другие интересующие темы

Просматривайте пользовательские метрики и аналитические данные.

После инициализации SDK Mobile Ads автоматически начинает регистрировать события аналитики и свойства пользователей из вашего приложения. Вы можете просматривать эти данные, не добавляя дополнительный код в приложение и не внедряя рекламу. Вот где вы можете увидеть эти данные аналитики:

Обратите внимание, что для более точного отображения показателей ARPU и ARPPU вы можете включить данные из пользовательского события аналитики под названием ecommerce_purchase в расчет дохода для этих показателей ( узнайте, как это сделать ).

(Необязательно) Используйте больше возможностей Google Analytics и Firebase.

Воспользуйтесь дополнительными возможностями и функциями для улучшения монетизации приложения и вовлечения пользователей:

  • Добавьте и используйте Firebase SDK для Google Analytics

    Для получения более подробной информации посетите руководство по использованию Google Analytics и Firebase с приложениями AdMob .

  • Используйте другие продукты Firebase в своем приложении.

    После добавления Firebase SDK для Google Analytics используйте другие продукты Firebase для оптимизации рекламы в вашем приложении.

    • Remote Config позволяет изменять поведение и внешний вид вашего приложения без публикации обновления.

    • A/B Testing позволяет проверять изменения в пользовательском интерфейсе, функциях или кампаниях по привлечению пользователей, чтобы выяснить, влияют ли они на ключевые показатели (такие как доход и удержание), прежде чем внедрять изменения повсеместно.

,

Рассмотрите возможность использования SDK для iOS и Android от AdMob.


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

Если вы еще этого не сделали, узнайте обо всех преимуществах совместного использования AdMob , Firebase и Google Analytics .

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

Прежде чем начать

  • Если у вас еще нет проекта Firebase и приложения Firebase, следуйте руководству по началу работы с Firebase: Добавьте Firebase в свой проект C++ .

  • Убедитесь, что Google Analytics включен в вашем проекте Firebase:

    • При создании нового проекта Firebase включите Google Analytics в процессе создания проекта.

    • Если у вас есть существующий проект Firebase, в котором не включена Google Analytics , вы можете включить Google Analytics на вкладке «Интеграции» вашего проекта. > Настройки проекта .

Шаг 1: Настройте приложение в своем аккаунте AdMob

  1. Зарегистрируйте каждый вариант вашего приложения на каждой платформе как приложение AdMob .

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

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

    Вам будет предложено добавить SDK Mobile Ads в ваше приложение. Подробные инструкции по выполнению этой задачи вы найдете далее в этом руководстве.

  2. Свяжите каждое из ваших приложений AdMob с соответствующим приложением Firebase.

    Этот шаг необязателен, но настоятельно рекомендуется. Узнайте больше о преимуществах включения пользовательских метрик и интеграции ваших приложений AdMob с Firebase.

    Для каждого варианта платформы выполните следующие два шага на панели управления «Приложения» в вашем аккаунте AdMob :

    1. Включите функцию «Пользовательские метрики» , чтобы AdMob мог обрабатывать и отображать отобранные аналитические данные в вашем аккаунте AdMob . Эта настройка также необходима для связи вашего приложения AdMob с Firebase.

    2. Свяжите ваше приложение AdMob с существующим проектом Firebase и соответствующим приложением Firebase.

      Убедитесь, что вы ввели то же имя пакета (Android) или идентификатор пакета (iOS), что и для вашего приложения Firebase. Найдите имя пакета или идентификатор пакета вашего приложения Firebase в карточке «Ваши приложения» вашего приложения . > Настройки проекта .

Шаг 2: Добавьте идентификатор вашего приложения AdMob в ваше приложение.

Android

Добавьте идентификатор вашего приложения AdMob в файл AndroidManifest.xml , добавив тег <meta-data> , как показано ниже.

<manifest>
    <application>
        <!-- Sample AdMob App ID: ca-app-pub-3940256099942544~3347511713 -->
        <meta-data
            android:name="com.google.android.gms.ads.APPLICATION_ID"
            android:value="ADMOB_APP_ID"/>
    </application>
</manifest>

iOS

В файл Info.plist вашего приложения добавьте ключ GADApplicationIdentifier со строковым значением, равным идентификатору вашего приложения AdMob .

Это изменение можно внести программным способом:

<!-- Sample AdMob App ID: ca-app-pub-3940256099942544~1458002511 -->
<key>GADApplicationIdentifier</key>
<string>ADMOB_APP_ID</string>

Или отредактируйте его в редакторе списка свойств:

Редактор списка объектов недвижимости

Шаг 3: Добавьте SDK для мобильной рекламы Google.

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

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

Android

  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. Синхронизируйте приложение, чтобы убедиться, что все зависимости имеют необходимые версии.

Всё готово! Ваше приложение на C++ настроено для использования Google Mobile Ads C++ SDK.

iOS

В этом разделе описан пример того, как добавить SDK Google Mobile Ads на C++ в ваш iOS-проект.

  1. Для получения CocoaPods версии 1 или более поздней выполните следующую команду:

    sudo gem install cocoapods --pre
  2. Добавьте модуль Google Mobile Ads из распакованного SDK.

    1. Создайте файл Podfile, если у вас его ещё нет:

      cd YOUR_APP_DIRECTORY
      pod init
    2. Добавьте в свой Podfile модуль для Google Mobile Ads C++ SDK:

      pod 'Google-Mobile-Ads-SDK'
    3. Установите Pod-пак, затем откройте файл .xcworkspace в Xcode.

      pod install
      open YOUR_APP.xcworkspace
    4. Добавьте в проект следующие фреймворки из Firebase C++ SDK:

      • xcframeworks/firebase.xcframework
      • xcframeworks/firebase_gma.xcframework

Всё готово! Ваше приложение на C++ настроено для использования Google Mobile Ads C++ SDK.

Шаг 4: Инициализация SDK для мобильной рекламы Google

Перед загрузкой рекламы инициализируйте SDK Mobile Ads , вызвав firebase::gma::Initialize() .

Этот вызов возвращает firebase::Future , который завершается после окончания инициализации (или по истечении 30-секундного таймаута). Вызывайте этот метод только один раз и как можно раньше, в идеале при запуске приложения.

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

Шаг 5: Выберите формат рекламы для внедрения в ваше приложение.

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

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

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

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

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

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

Межстраничные рекламные объявления лучше всего использовать в естественных паузах в процессе работы приложения, например, между уровнями игры или сразу после завершения задачи.

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

Награжден

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

Реклама с вознаграждением (или «на основе вознаграждения») может помочь монетизировать пользователей бесплатных игр.

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

Другие интересующие темы

Просматривайте пользовательские метрики и аналитические данные.

После инициализации SDK Mobile Ads автоматически начинает регистрировать события аналитики и свойства пользователей из вашего приложения. Вы можете просматривать эти данные, не добавляя дополнительный код в приложение и не внедряя рекламу. Вот где вы можете увидеть эти данные аналитики:

Обратите внимание, что для более точного отображения показателей ARPU и ARPPU вы можете включить данные из пользовательского события аналитики под названием ecommerce_purchase в расчет дохода для этих показателей ( узнайте, как это сделать ).

(Необязательно) Используйте больше возможностей Google Analytics и Firebase.

Воспользуйтесь дополнительными возможностями и функциями для улучшения монетизации приложения и вовлечения пользователей:

  • Добавьте и используйте Firebase SDK для Google Analytics

    Для получения более подробной информации посетите руководство по использованию Google Analytics и Firebase с приложениями AdMob .

  • Используйте другие продукты Firebase в своем приложении.

    После добавления Firebase SDK для Google Analytics используйте другие продукты Firebase для оптимизации рекламы в вашем приложении.

    • Remote Config позволяет изменять поведение и внешний вид вашего приложения без публикации обновления.

    • A/B Testing позволяет проверять изменения в пользовательском интерфейсе, функциях или кампаниях по привлечению пользователей, чтобы выяснить, влияют ли они на ключевые показатели (такие как доход и удержание), прежде чем внедрять изменения повсеместно.

,

Рассмотрите возможность использования SDK для iOS и Android от AdMob.


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

Если вы еще этого не сделали, узнайте обо всех преимуществах совместного использования AdMob , Firebase и Google Analytics .

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

Прежде чем начать

  • Если у вас еще нет проекта Firebase и приложения Firebase, следуйте руководству по началу работы с Firebase: Добавьте Firebase в свой проект C++ .

  • Убедитесь, что Google Analytics включен в вашем проекте Firebase:

    • При создании нового проекта Firebase включите Google Analytics в процессе создания проекта.

    • Если у вас есть существующий проект Firebase, в котором не включена Google Analytics , вы можете включить Google Analytics на вкладке «Интеграции» вашего проекта. > Настройки проекта .

Шаг 1: Настройте приложение в своем аккаунте AdMob

  1. Зарегистрируйте каждый вариант вашего приложения на каждой платформе как приложение AdMob .

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

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

    Вам будет предложено добавить SDK Mobile Ads в ваше приложение. Подробные инструкции по выполнению этой задачи вы найдете далее в этом руководстве.

  2. Свяжите каждое из ваших приложений AdMob с соответствующим приложением Firebase.

    Этот шаг необязателен, но настоятельно рекомендуется. Узнайте больше о преимуществах включения пользовательских метрик и интеграции ваших приложений AdMob с Firebase.

    Для каждого варианта платформы выполните следующие два шага на панели управления «Приложения» в вашем аккаунте AdMob :

    1. Включите функцию «Пользовательские метрики» , чтобы AdMob мог обрабатывать и отображать отобранные аналитические данные в вашем аккаунте AdMob . Эта настройка также необходима для связи вашего приложения AdMob с Firebase.

    2. Свяжите ваше приложение AdMob с существующим проектом Firebase и соответствующим приложением Firebase.

      Убедитесь, что вы ввели то же имя пакета (Android) или идентификатор пакета (iOS), что и для вашего приложения Firebase. Найдите имя пакета или идентификатор пакета вашего приложения Firebase в карточке «Ваши приложения» вашего приложения . > Настройки проекта .

Шаг 2: Добавьте идентификатор вашего приложения AdMob в ваше приложение.

Android

Добавьте идентификатор вашего приложения AdMob в файл AndroidManifest.xml , добавив тег <meta-data> , как показано ниже.

<manifest>
    <application>
        <!-- Sample AdMob App ID: ca-app-pub-3940256099942544~3347511713 -->
        <meta-data
            android:name="com.google.android.gms.ads.APPLICATION_ID"
            android:value="ADMOB_APP_ID"/>
    </application>
</manifest>

iOS

В файл Info.plist вашего приложения добавьте ключ GADApplicationIdentifier со строковым значением, равным идентификатору вашего приложения AdMob .

Это изменение можно внести программным способом:

<!-- Sample AdMob App ID: ca-app-pub-3940256099942544~1458002511 -->
<key>GADApplicationIdentifier</key>
<string>ADMOB_APP_ID</string>

Или отредактируйте его в редакторе списка свойств:

Редактор списка объектов недвижимости

Шаг 3: Добавьте SDK для мобильной рекламы Google.

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

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

Android

  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. Синхронизируйте приложение, чтобы убедиться, что все зависимости имеют необходимые версии.

Всё готово! Ваше приложение на C++ настроено для использования Google Mobile Ads C++ SDK.

iOS

В этом разделе описан пример того, как добавить SDK Google Mobile Ads на C++ в ваш iOS-проект.

  1. Для получения CocoaPods версии 1 или более поздней выполните следующую команду:

    sudo gem install cocoapods --pre
  2. Добавьте модуль Google Mobile Ads из распакованного SDK.

    1. Создайте файл Podfile, если у вас его ещё нет:

      cd YOUR_APP_DIRECTORY
      pod init
    2. Добавьте в свой Podfile модуль для Google Mobile Ads C++ SDK:

      pod 'Google-Mobile-Ads-SDK'
    3. Установите Pod-пак, затем откройте файл .xcworkspace в Xcode.

      pod install
      open YOUR_APP.xcworkspace
    4. Добавьте в проект следующие фреймворки из Firebase C++ SDK:

      • xcframeworks/firebase.xcframework
      • xcframeworks/firebase_gma.xcframework

Всё готово! Ваше приложение на C++ настроено для использования Google Mobile Ads C++ SDK.

Шаг 4: Инициализация SDK для мобильной рекламы Google

Перед загрузкой рекламы инициализируйте SDK Mobile Ads , вызвав firebase::gma::Initialize() .

Этот вызов возвращает firebase::Future , который завершается после окончания инициализации (или по истечении 30-секундного таймаута). Вызывайте этот метод только один раз и как можно раньше, в идеале при запуске приложения.

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

Шаг 5: Выберите формат рекламы для внедрения в ваше приложение.

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

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

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

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

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

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

Межстраничные рекламные объявления лучше всего использовать в естественных паузах в процессе работы приложения, например, между уровнями игры или сразу после завершения задачи.

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

Награжден

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

Реклама с вознаграждением (или «на основе вознаграждения») может помочь монетизировать пользователей бесплатных игр.

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

Другие интересующие темы

Просматривайте пользовательские метрики и аналитические данные.

После инициализации SDK Mobile Ads автоматически начинает регистрировать события аналитики и свойства пользователей из вашего приложения. Вы можете просматривать эти данные, не добавляя дополнительный код в приложение и не внедряя рекламу. Вот где вы можете увидеть эти данные аналитики:

Обратите внимание, что для более точного отображения показателей ARPU и ARPPU вы можете включить данные из пользовательского события аналитики под названием ecommerce_purchase в расчет дохода для этих показателей ( узнайте, как это сделать ).

(Необязательно) Используйте больше возможностей Google Analytics и Firebase.

Воспользуйтесь дополнительными возможностями и функциями для улучшения монетизации приложения и вовлечения пользователей:

  • Добавьте и используйте Firebase SDK для Google Analytics

    Для получения более подробной информации посетите руководство по использованию Google Analytics и Firebase с приложениями AdMob .

  • Используйте другие продукты Firebase в своем приложении.

    После добавления Firebase SDK для Google Analytics используйте другие продукты Firebase для оптимизации рекламы в вашем приложении.

    • Remote Config позволяет изменять поведение и внешний вид вашего приложения без публикации обновления.

    • A/B Testing позволяет проверять изменения в пользовательском интерфейсе, функциях или кампаниях по привлечению пользователей, чтобы выяснить, влияют ли они на ключевые показатели (такие как доход и удержание), прежде чем внедрять изменения повсеместно.

,

Рассмотрите возможность использования SDK для iOS и Android от AdMob.


This quickstart guide is for publishers and developers who want to use AdMob to monetize an app that's built with Firebase. If you don't plan to include Firebase in your app, visit the standalone AdMob guide instead.

If you haven't yet, learn about all the benefits of using AdMob , Firebase, and Google Analytics together.

If this is your first time going through this guide, we recommend that you download and follow along using the Google Mobile Ads C++ SDK test app .

Прежде чем начать

  • If you don't already have a Firebase project and a Firebase app, follow the Firebase getting started guide: Add Firebase to your C++ project .

  • Make sure that Google Analytics is enabled in your Firebase project:

    • If you're creating a new Firebase project, enable Google Analytics during the project creation workflow.

    • If you have an existing Firebase project that doesn't have Google Analytics enabled, you can enable Google Analytics from the Integrations tab of your > Project settings .

Step 1: Set up your app in your AdMob account

  1. Register each platform variant of your app as an AdMob app.

    1. Sign into or sign up for an AdMob account.

    2. Register each platform variant of your app with AdMob . This step creates an AdMob app with a unique AdMob App ID that you'll need later in this guide.

    You'll be asked to add the Mobile Ads SDK to your app. Find detailed instructions for this task later in this guide.

  2. Link your each of your AdMob apps to the corresponding Firebase app.

    This step is optional but strongly recommended. Learn more about the benefits of enabling user metrics and linking your AdMob apps to Firebase.

    For each platform variant, complete the following two steps in the Apps dashboard of your AdMob account:

    1. Enable User Metrics to allow AdMob to process and display curated analytics data in your AdMob account. It's also a required setting for you to link your AdMob app to Firebase.

    2. Link your AdMob app to your existing Firebase project and corresponding Firebase app.

      Make sure that you enter the same package name (Android) or bundle ID (iOS) as you entered for your Firebase app. Find your Firebase app's package name or bundle ID in the Your apps card of your > Project settings .

Step 2: Add your AdMob App ID to your app

Android

Add your AdMob App ID to your app's AndroidManifest.xml file by adding the <meta-data> tag as shown below.

<manifest>
    <application>
        <!-- Sample AdMob App ID: ca-app-pub-3940256099942544~3347511713 -->
        <meta-data
            android:name="com.google.android.gms.ads.APPLICATION_ID"
            android:value="ADMOB_APP_ID"/>
    </application>
</manifest>

iOS

In your app's Info.plist file, add a GADApplicationIdentifier key with a string value of your AdMob App ID .

You can make this change programmatically:

<!-- Sample AdMob App ID: ca-app-pub-3940256099942544~1458002511 -->
<key>GADApplicationIdentifier</key>
<string>ADMOB_APP_ID</string>

Or, edit it in the property list editor:

Property List Editor

Step 3: Add the Google Mobile Ads SDK

Since the Google Mobile Ads C++ SDK resides in the firebase::gma namespace, download the Firebase C++ SDK , and then unzip it to a directory of your choice.

The Firebase C++ SDK is not platform-specific, but it does require platform-specific library configurations.

Android

  1. In your project's gradle.properties file, specify the location of the unzipped SDK:

    systemProp.firebase_cpp_sdk.dir=FULL/PATH/TO/SDK
  2. To your project's settings.gradle file, add the following content:

    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. To your module (app-level) Gradle file (usually app/build.gradle ), add the following content, which includes the library dependency for the 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. To your project's CMakeLists.txt file, add the following content.

    # 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. Sync your app to ensure that all dependencies have the necessary versions.

You're all set! Your C++ app is configured to use the Google Mobile Ads C++ SDK.

iOS

The steps in this section are an example of how to add the Google Mobile Ads C++ SDK to your iOS project.

  1. Get CocoaPods version 1 or later by running:

    sudo gem install cocoapods --pre
  2. Add Google Mobile Ads pod from the unzipped SDK.

    1. Create a Podfile if you don't already have one:

      cd YOUR_APP_DIRECTORY
      pod init
    2. To your Podfile, add the pod for the Google Mobile Ads C++ SDK:

      pod 'Google-Mobile-Ads-SDK'
    3. Install the pod, then open the .xcworkspace file in Xcode.

      pod install
      open YOUR_APP.xcworkspace
    4. Add the following frameworks from the Firebase C++ SDK to the project:

      • xcframeworks/firebase.xcframework
      • xcframeworks/firebase_gma.xcframework

You're all set! Your C++ app is configured to use the Google Mobile Ads C++ SDK.

Step 4: Initialize the Google Mobile Ads SDK

Before loading ads, initialize the Mobile Ads SDK by calling firebase::gma::Initialize() .

This call returns a firebase::Future that completes once initialization finishes (or after a 30-second timeout). Call this method only once and as early as possible, ideally at app launch.

Here's an example of how to call 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.
}

Use a Future to monitor the completion status of a method call

A Future provides you a way to determine the completion status of your asynchronous method calls.

For example, when your app calls firebase::gma::Initialize() , a new firebase::Future is created and returned. Your app can then poll the status() of the Future to determine when the initialization has completed. Once complete, your app can invoke result() to obtain the resulting AdapterInitializationStatus .

Methods that return a Future have a corresponding "last result" method that apps can use to retrieve the most recent Future for a given action. For example, firebase::gma::Initialize() has a corresponding method called firebase::gma::InitializeLastResult() , which returns a Future that your app can use to check the status of the last call to firebase::gma::Initialize() .

If the status of the Future is complete and its error code is firebase::gma::kAdErrorCodeNone , then the operation has completed successfully.

You can also register callbacks to be invoked when a Future is completed. In some cases, the callback will be running in a different thread, so make sure your code is thread-safe. This code snippet uses a function pointer for the callback:

// 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.
  }
}

Step 5: Choose an ad format to implement in your app

AdMob offers a number of different ad formats, so you can choose the format that best fits the user experience of your app. Click a button for an ad format to view detailed implementation instructions in the AdMob documentation.

Rectangular ads that appear at the top or bottom of the device screen

Banner ads stay on screen while users are interacting with the app, and can refresh automatically after a certain period of time. If you're new to mobile advertising, they're a great place to start.

Implement banner ads

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

Full-screen ads that cover the interface of an app until closed by the user

Interstitial ads are best used at natural pauses in the flow of an app's execution, such as between levels of a game or just after a task is completed.

Implement interstitial ads

Награжден

Ads that reward users for watching short videos and interacting with playable ads and surveys

Rewarded (or "reward-based") ads can help monetize free-to-play users.

Implement rewarded ads

Other topics of interest

View user metrics and analytics data

After its initialization, the Mobile Ads SDK automatically starts logging analytics events and user properties from your app. You can view this data without adding any additional code to your app or implementing any ads. Here's where you can see this analytics data:

Note that to better represent ARPU and ARPPU metrics, you might want to include data from an analytics custom event called ecommerce_purchase in the revenue calculation for these metrics ( learn how ).

(Optional) Use more features of Google Analytics and Firebase

Take advantage of more opportunities and features to improve app monetization and user engagement:

  • Add and use the Firebase SDK for Google Analytics

    To learn more, visit the guide for using Google Analytics and Firebase with AdMob apps .

  • Use other Firebase products in your app

    After you add the Firebase SDK for Google Analytics , use other Firebase products to optimize ads in your app.

    • Remote Config enables you to change the behavior and appearance of your app without publishing an app update.

    • A/B Testing gives you the power to test changes to your app's UI, features, or engagement campaigns to learn if they make an impact on your key metrics (like revenue and retention) before rolling the changes out widely.