Esta guía está destinada a los publicadores que desean monetizar una app de C++ con AdMob sin usar Firebase. Si tienes previsto incluir Firebase en tu app (o lo estás considerando), consulta la versión de AdMob con Firebase de esta guía.
La integración del SDK de anuncios de Google para dispositivos móviles para C++ en una app es el primer paso para mostrar anuncios y obtener ingresos. Una vez que hayas integrado el SDK, podrás elegir un formato de anuncio, como 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 para iOS y Android, y solo está disponible en esas plataformas. El SDK de anuncios de Google para dispositivos móviles para C++ usa
construcciones de Firebase para C++ para 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 de anuncios de Google para dispositivos móviles para C++ y que la uses a fin de 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
minSdkVersionde 16 o más - Una
compileSdkVersionde 28 o una versión posterior
- Una
iOS
- Usa Xcode 13 o una versión posterior
- Segmentación para iOS 10.0 o posterior
Agrega tu app a tu cuenta de AdMob
Para registrarla como app que se monetiza mediante AdMob, sigue estos pasos:
Accede o regístrate para obtener una cuenta de AdMob.
Registra tu app en AdMob. Este paso te permite crearla con un ID de app que se monetiza mediante AdMob, que es único y que necesitarás más adelante en esta guía.
Instala 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
de 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 parámetros de configuración de bibliotecas específicas de una plataforma.
Android
Recomendamos usar CMake, pero puedes encontrar instrucciones para ndk-build en nuestra
guía de introducción del
SDK de Firebase C++ para
vincular libfirebase_app.a y libfirebase_gma.a a tu app.
En el archivo
gradle.propertiesde tu proyecto, especifica la ubicación del SDK descomprimido:systemProp.firebase_cpp_sdk.dir=FULL_PATH_TO_SDKAgrega el siguiente contenido al archivo
settings.gradlede 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"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 }Agrega el siguiente contenido al archivo
CMakeLists.txtde 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}")Sincroniza tu app para garantizar que todas las dependencias tengan las versiones necesarias.
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.
Ejecuta el siguiente comando para obtener la versión 1 de CocoaPods o una más reciente.
sudo gem install cocoapods --preAgrega el Pod de anuncios de Google para dispositivos móviles del SDK descomprimido.
Crea un Podfile si aún no tienes uno:
cd APP_DIRECTORYpod initEn tu Podfile, agrega los Pods para el SDK de anuncios de Google para dispositivos móviles para C++, el SDK de Google User Messaging Platform y el SDK principal mínimo de Firebase (que requiere el SDK de GMA para C++):
pod 'Firebase/CoreOnly' pod 'Google-Mobile-Ads-SDK' pod 'GoogleUserMessagingPlatform'Instala los Pods y abre el archivo
.xcworkspaceen Xcode.pod installopen APP.xcworkspaceAgrega los siguientes frameworks del SDK de Firebase C++ al proyecto:
xcframeworks/firebase.xcframeworkxcframeworks/firebase_gma.xcframework
¡Listo! Configuraste tu app de C++ para usar el SDK de anuncios de Google para dispositivos móviles para C++ sin ningún otro servicio de Firebase.
Configura el ID de app que se monetiza mediante AdMob de tu app
Android
Sigue el paso 3 de Configura tu app como se describe en la guía del SDK de anuncios para dispositivos móviles para Android y, luego, regresa a esta página.
iOS
Sigue el paso Actualiza tu archivo Info.plist como se describe en la guía del SDK de anuncios para dispositivos móviles para iOS y, luego, regresa a esta página.
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 un firebase::Future una vez que se completa la inicialización (o después de un tiempo de espera de 30 segundos). Esto solo se debe hacer una vez, idealmente cuando se inicia la app.
Los anuncios se pueden precargar con el SDK de anuncios de Google para dispositivos móviles para C++ o con los SDKs de socios de mediación tras una llamada a Initialize(). Si necesitas obtener el consentimiento de los usuarios ubicados en el Espacio Económico Europeo (EEE), configura los parámetros específicos de la solicitud que se requieran, como tag_for_child_directed_treatment o tag_for_under_age_of_consent, o toma las medidas pertinentes antes de cargar anuncios. Asegúrate de hacer esto invocando 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 Segmentación.
Aquí te mostramos 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.
}
Usa el espacio de nombres Future para supervisar el estado de una llamada de método
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 un nuevo firebase::Future. Luego, la 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 devuelven un Future tienen un método "LastResult" correspondiente que
las apps pueden usar para recuperar la interfaz Future más reciente de una acción determinada. 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ó
con éxito.
También puedes registrar devoluciones de llamada que se invocarán cuando se complete una interfaz 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 marcador 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.
}
}
Selecciona un formato de anuncio
Ahora que ya se importó el SDK de anuncios de Google para dispositivos móviles para C++, tienes todo listo para implementar un anuncio. AdMob ofrece una serie de formatos de anuncio diferentes, por lo que puedes elegir el que mejor se ajuste a la experiencia del usuario de tu app.
Banner
Son anuncios rectangulares que aparecen en la parte superior o inferior de la pantalla del dispositivo. Los anuncios de banner permanecen en la pantalla mientras los usuarios interactúan con la app y se pueden actualizar automáticamente después de un período determinado. Si no tienes mucha experiencia con la publicidad para dispositivos móviles, este formato es una excelente opción para comenzar.
Implementar anuncios de banner
Intersticial
Son anuncios de pantalla completa que cubren la interfaz de una app hasta que el usuario los cierra. Lo más recomendable es usarlos en las pausas naturales del flujo de ejecución de una app, como entre distintos niveles de un juego o justo después de completar una tarea.
Implementar anuncios intersticiales
Recompensado
Son anuncios que recompensan a los usuarios por mirar videos cortos y por interactuar con encuestas y anuncios con juegos. Se usan para monetizar apps gratuitas.