Ce guide est destiné aux éditeurs qui souhaitent monétiser une application C++ avec AdMob, sans utiliser Firebase. Si vous prévoyez d'inclure Firebase dans votre application ou si vous y réfléchissez, consultez plutôt la version de ce guide dédiée à AdMob avec Firebase.
L'intégration du SDK Google Mobile Ads C++ dans une application est la première étape pour diffuser des annonces et générer des revenus. Une fois le SDK intégré, vous pouvez choisir un format d'annonce, tel qu'un interstitiel ou une annonce avec récompense, puis suivre les étapes pour l'implémenter.
Le SDK Google Mobile Ads C++ encapsule les SDK Google Mobile Ads iOS et Android, et n'est disponible que sur ces plates-formes. Le SDK Google Mobile Ads C++ utilise des constructions Firebase C++ pour prendre en charge les opérations asynchrones. Il réside donc dans l'espace de noms firebase::gma.
Si vous consultez ce guide pour la première fois, nous vous recommandons de télécharger l'application de test Google Mobile Ads C++ et de la suivre.
Prérequis
Android
- Utilisez Android Studio 3.2 ou version ultérieure.
- Assurez-vous que le fichier de compilation de votre application utilise les valeurs suivantes :
- Un
minSdkVersionde 16 ou plus - Un
compileSdkVersionde 28 ou plus
- Un
iOS
- Utilisez Xcode 13 ou version ultérieure.
- Ciblez iOS 10.0 ou version ultérieure.
Configurer votre application dans votre compte AdMob
Enregistrez votre application en tant qu'application AdMob en procédant comme suit :
Connectez-vous à un compte AdMob ou créez-en un pour.
Enregistrez votre application auprès d' AdMob. Cette étape crée une application AdMob avec un ID d'application AdMob unique, qui sera nécessaire plus loin dans ce guide.
Installer le SDK Google Mobile Ads C++
Étant donné que le SDK Google Mobile Ads C++ réside dans l'espace de noms firebase::gma,
téléchargez le SDK Firebase C++,
puis décompressez-le dans le répertoire de votre choix.
Le SDK Firebase C++ n'est pas spécifique à une plate-forme, mais il nécessite des configurations de bibliothèque spécifiques à la plate-forme.
Android
Nous vous recommandons d'utiliser CMake, mais vous trouverez des instructions pour ndk-build dans notre
guide de démarrage général du SDK Firebase C++ afin d'
associer libfirebase_app.a et libfirebase_gma.a à votre application.
Dans le fichier
gradle.propertiesde votre projet, spécifiez l'emplacement du SDK décompressé :systemProp.firebase_cpp_sdk.dir=FULL_PATH_TO_SDKAjoutez le contenu suivant au fichier
settings.gradlede votre projet :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"Ajoutez le contenu suivant au fichier Gradle de votre module (au niveau de l'application), généralement
app/build.gradle, qui inclut la dépendance de la bibliothèque pour le SDK Google Mobile Ads C++.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 }Ajoutez le contenu suivant au fichier
CMakeLists.txtde votre projet.# 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}")Synchronisez votre application pour vous assurer que toutes les dépendances disposent des versions nécessaires.
iOS
Les étapes de cette section montrent comment ajouter le SDK Google Mobile Ads C++ à votre projet iOS.
Obtenez CocoaPods version 1 ou ultérieure en exécutant :
sudo gem install cocoapods --preAjoutez le pod Google Mobile Ads à partir du SDK décompressé.
Créez un fichier Podfile si vous n'en possédez pas déjà un :
cd APP_DIRECTORYpod initAjoutez à votre fichier Podfile les pods pour le SDK Google Mobile Ads C++, le SDK Google User Messaging Platform et le SDK Firebase Core minimal (requis par le SDK GMA C++) :
pod 'Firebase/CoreOnly' pod 'Google-Mobile-Ads-SDK' pod 'GoogleUserMessagingPlatform'Installez les pods, puis ouvrez le fichier
.xcworkspacedans Xcode.pod installopen APP.xcworkspaceAjoutez les frameworks suivants du SDK Firebase C++ au projet :
xcframeworks/firebase.xcframeworkxcframeworks/firebase_gma.xcframework
Vous avez terminé. Votre application C++ est configurée pour utiliser le SDK Google Mobile Ads C++ sans aucun autre service Firebase.
Configurer l'ID d'application AdMob de votre application
Android
Suivez l'étape 3 de la section Configurer votre application décrite dans le guide Android du SDK Mobile Ads , puis revenez à cette page.
iOS
Suivez l'étape Mettre à jour votre fichier Info.plist décrite dans le guide iOS du SDK Mobile Ads , puis revenez à cette page.
Initialiser le SDK Google Mobile Ads
Avant de charger des annonces, demandez à votre application d'initialiser le SDK Google Mobile Ads C++ en appelant firebase::gma::Initialize(), qui initialise le SDK et complète un firebase::Future une fois l'initialisation terminée (ou après un délai de 30 secondes). Cette opération ne doit être effectuée qu'une seule fois, idéalement au lancement de l'application.
Les annonces peuvent être préchargées par le SDK Google Mobile Ads C++ ou les SDK des partenaires de médiation lors de l'appel de Initialize(). Si vous devez obtenir le consentement des utilisateurs dans l'Espace économique européen (EEE), définir des indicateurs spécifiques à une demande (tels que tag_for_child_directed_treatment ou tag_for_under_age_of_consent) ou effectuer une autre action avant de charger des annonces, veillez à le faire en appelant firebase::gma::SetRequestConfiguration() avant d'initialiser le SDK Google Mobile Ads C++. Pour en savoir plus, consultez notre
guide sur le ciblage.
Voici un exemple d'appel de 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.
}
Utiliser un Future pour surveiller l'état d'achèvement d'un appel de méthode
Un Future vous permet de déterminer l'état d'achèvement de vos appels de méthode asynchrones.
Par exemple, lorsque votre application appelle firebase::gma::Initialize(), un nouveau firebase::Future est créé et renvoyé. Votre application peut ensuite interroger le status() du Future pour déterminer quand l'initialisation est terminée.
Une fois l'opération terminée, votre application peut appeler result() pour obtenir le AdapterInitializationStatus résultant.
Les méthodes qui renvoient un Future ont une méthode "dernier résultat" correspondante que les applications peuvent utiliser pour récupérer le Future le plus récent pour une action donnée. Par exemple, firebase::gma::Initialize() a une méthode correspondante appelée firebase::gma::InitializeLastResult(), qui renvoie un Future que votre application peut utiliser pour vérifier l'état du dernier appel à firebase::gma::Initialize().
Si l'état du Future est "terminé" et que son code d'erreur est firebase::gma::kAdErrorCodeNone, l'opération a réussi.
Vous pouvez également enregistrer des rappels à appeler lorsqu'un Future est terminé. Dans certains cas, le rappel s'exécute dans un thread différent. Assurez-vous donc que votre code est thread-safe. Cet extrait de code utilise un pointeur de fonction pour le rappel :
// 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.
}
}
Sélectionner un format d'annonce
Le SDK Google Mobile Ads C++ est maintenant importé et vous êtes prêt à implémenter une annonce. AdMob propose différents formats d'annonces. Vous pouvez donc choisir celui qui correspond le mieux à l'expérience utilisateur de votre application.
Bannière
Annonces rectangulaires qui s'affichent en haut ou en bas de l'écran de l'appareil. Les bannières restent à l'écran lorsque les utilisateurs interagissent avec l'application et peuvent s'actualiser automatiquement au bout d'un certain temps. Si vous débutez dans la publicité sur mobile, c'est un excellent point de départ.
Interstitiel
Annonces plein écran qui couvrent l'interface d'une application jusqu'à ce que l'utilisateur les ferme. Il est préférable de les utiliser lors des pauses naturelles dans le flux d'exécution d'une application, par exemple entre les niveaux d'un jeu ou juste après l'exécution d'une tâche.
Implémenter des annonces interstitielles
Avec récompense
Annonces qui récompensent les utilisateurs pour avoir regardé de courtes vidéos et interagi avec des annonces jouables et des enquêtes. Elles sont utilisées pour monétiser les applications sans frais.