Comenzar

Organiza tus páginas con colecciones Guarda y categoriza el contenido según tus preferencias.

Esta guía está destinada a los editores que desean monetizar una app de C++ con AdMob y que no usan Firebase. Si planeas incluir Firebase en tu app (o lo estás considerando), consulta la versión de AdMob con Firebase de esta guía.

Integrar el SDK de C++ de anuncios de Google para dispositivos móviles en una app es el primer paso para mostrar anuncios y obtener ingresos. Una vez que hayas integrado el SDK, puedes elegir un formato de anuncio (intersticial o recompensado) y seguir los pasos para implementarlo.

El SDK de C++ de anuncios de Google para dispositivos móviles une los SDK de anuncios de Google para dispositivos móviles de iOS y Android, y solo está disponible en esas plataformas. El SDK de C++ de anuncios de Google para dispositivos móviles usa las construcciones de Firebase C++ a fin de admitir operaciones asíncronas, por lo que reside en el espacio de nombres firebase::gma.

Si es la primera vez que usas esta guía, te recomendamos que descargues la app de prueba C++ de anuncios de Google para dispositivos móviles y la uses para seguir los temas que se tratan aquí.

Requisitos previos

Android

  • Usa Android Studio 3.2 o una versión posterior
  • Asegúrate de que el archivo de compilación de tu app use los siguientes valores:
    • Una minSdkVersion de 16 o más
    • Una compileSdkVersion de 28 o superior

iOS

  • Usa Xcode 13 o una versión posterior
  • Orientación a iOS 10.0 o versiones posteriores

Cómo configurar la app en tu cuenta de AdMob

Registra tu app como una app de AdMob. Para ello, sigue estos pasos:

  1. Accede o regístrate para obtener una cuenta de AdMob.

  2. Registra tu app en AdMob. En este paso, se crea una app de AdMob con un ID de app de AdMob único que se necesita más adelante en esta guía.

Instale el SDK de C++ de anuncios de Google para dispositivos móviles

Dado que el SDK de C++ de anuncios de Google para dispositivos móviles reside en el espacio de nombres firebase::gma, descarga el SDK de Firebase C++ y, luego, descomprímelo en el directorio que desees.

El SDK de Firebase C++ no es específico de una plataforma, pero sí requiere configuraciones de bibliotecas específicas para cada plataforma.

Android

  1. En el archivo gradle.properties de tu proyecto, especifica la ubicación del SDK descomprimido:

      systemProp.firebase_cpp_sdk.dir=full-path-to-SDK
    
  2. Agrega el siguiente contenido al archivo settings.gradle de tu proyecto:

      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. En el archivo Gradle (generalmente app/build.gradle) de tu módulo (a nivel de app), agrega el siguiente contenido, que incluye la dependencia de la biblioteca del SDK de C++ de anuncios de Google para dispositivos móviles.

      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. Agrega el siguiente contenido al archivo CMakeLists.txt de tu proyecto.

      # 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. Sincroniza tu app para asegurarte de que todas las dependencias tengan las versiones necesarias.

¡Eso es todo! La app de C++ está configurada para usar el SDK de C++ de anuncios de Google para dispositivos móviles sin ningún otro servicio de Firebase.

iOS

Los pasos que se indican en esta sección son un ejemplo de cómo agregar el SDK de C++ de anuncios de Google para dispositivos móviles a tu proyecto de iOS.

  1. Ejecuta el siguiente comando para obtener CocoaPods 1 o una versión posterior:

    sudo gem install cocoapods --pre
    
  2. Agrega el Pod de anuncios de Google para dispositivos móviles del SDK descomprimido.

    1. Crea un Podfile si aún no tienes uno:

      cd your-app-directory
      pod init
      
    2. En tu Podfile, agrega el pod para el SDK de C++ de anuncios de Google para dispositivos móviles:

        pod 'Google-Mobile-Ads-SDK'
      
    3. Instala el pod y abre el archivo .xcworkspace en Xcode.

      pod install
      open your-app.xcworkspace
      
    4. Agrega los siguientes marcos de trabajo del SDK de Firebase C++ al proyecto:

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

¡Eso es todo! La app de C++ está configurada para usar el SDK de C++ de anuncios de Google para dispositivos móviles sin ningún otro servicio de Firebase.

Configura el ID de la app de AdMob de tu app

Android

Sigue el paso 3 de Configura tu app como se describe en la Guía de Android para el SDK de Mobile Ads y, luego, regresa a esta página de introducción de C++.

iOS

Sigue el paso de Actualiza tu archivo Info.plist como se describe en la guía para iOS del SDK de anuncios para dispositivos móviles y, luego, regresa a esta página de introducción de C++.

Cómo inicializar el SDK de anuncios de Google para dispositivos móviles

Antes de cargar anuncios, haz que tu app inicialice el SDK de C++ de anuncios de Google para dispositivos móviles llamando a firebase::gma::Initialize(), que inicializa el SDK y completa una firebase::Future una vez que se completa la inicialización (o después de un tiempo de espera de 30 segundos). Esto se debe hacer solo una vez, idealmente cuando se inicia la app.

Los anuncios se pueden cargar previamente con el SDK de C++ de anuncios de Google para dispositivos móviles o con los SDK de socios de mediación tras una llamada a Initialize(). Si necesitas obtener el consentimiento de los usuarios en el Espacio Económico Europeo (EEE), establece las marcas específicas de la solicitud que hagan falta (como tag_for_child_directed_treatment o tag_for_under_age_of_consent) o realiza la acción pertinente antes de cargar anuncios. Para ello, invoca firebase::gma::SetRequestConfiguration() antes de inicializar el SDK de C++ de anuncios de Google para dispositivos móviles. Para obtener más información, consulta nuestra guía de orientación.

Este es un ejemplo de cómo llamar a 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.
}

Cómo usar un Future para supervisar el estado de una llamada de método

Un Future te permite determinar el estado de las llamadas a métodos asíncronos.

Por ejemplo, cuando tu app llama a firebase::gma::Initialize(), se crea y se muestra una nueva firebase::Future. Luego, tu app puede consultar el status() de Future para determinar cuándo se completó la inicialización. Una vez completada, tu app puede invocar a result() para obtener el AdapterInitializationStatus resultante.

Los métodos que muestran un Future tienen un método "LastResult" correspondiente que las apps pueden usar para recuperar el Future más reciente de una acción específica. Por ejemplo, firebase::gma::Initialize() tiene un método denominado firebase::gma::InitializeLastResult(), que muestra un Future que tu app puede usar para verificar el estado de la última llamada a firebase::gma::Initialize().

Si el estado de Future está completo y su código de error es firebase::gma::kAdErrorCodeNone, la operación se completó de forma correcta.

También puedes registrar devoluciones de llamada que se invocarán cuando se complete una Future. En algunos casos, la devolución de llamada se ejecutará en un subproceso diferente, por lo que debes asegurarte de que tu código sea seguro para los subprocesos. Este fragmento de código usa un puntero de función para la devolución de llamada:

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

Seleccione un formato de anuncio

El SDK de C++ de anuncios de Google para dispositivos móviles ahora se importa y estás listo para implementar un anuncio. AdMob ofrece diferentes formatos de anuncios para que puedas elegir el que mejor se adapte a la experiencia del usuario de tu app.

Anuncios rectangulares que aparecen en la parte superior o inferior de la pantalla del dispositivo Los anuncios de banner permanecen en pantalla mientras los usuarios interactúan con la app y se pueden actualizar automáticamente después de cierto período. Si la publicidad para celulares es nueva para usted, es un excelente punto de partida.

Cómo implementar anuncios de banner

Intersticial

Anuncios de pantalla completa que cubren la interfaz de una aplicación hasta que el usuario los cierra. Se usan mejor en pausas naturales en el flujo de ejecución de una app, como entre los niveles de un juego o justo después de completar una tarea.

Implemente anuncios intersticiales

Recompensado

Anuncios que recompensan a los usuarios por mirar videos cortos y por interactuar con encuestas y anuncios con juegos Se usa para monetizar apps gratuitas.

Cómo implementar anuncios recompensados