Questa guida è rivolta ai publisher che vogliono monetizzare un'app C++ con AdMob, senza utilizzare Firebase. Se hai intenzione di includere Firebase nella tua app o se stai pensando di farlo, consulta la versione AdMob con Firebase di questa guida.
Integrare l'SDK Google Mobile Ads C++ in un'app è il primo passo per visualizzare annunci e generare entrate. Dopo aver integrato l'SDK, puoi scegliere un formato dell'annuncio, ad esempio interstitial o con premio, e seguire i passaggi per implementarlo.
L'SDK Google Mobile Ads C++ include gli SDK Google Mobile Ads per iOS e Android ed è disponibile solo su queste piattaforme. L'SDK Google Mobile Ads C++ utilizza i costrutti Firebase C++ per supportare operazioni asincrone, pertanto risiede nello spazio dei nomi firebase::gma
.
Se è la prima volta che consulti questa guida, ti consigliamo di scaricare e continuare a utilizzare l'app di prova C++ per gli annunci per dispositivi mobili di Google.
Prerequisiti
Android
- Utilizzare Android Studio 3.2 o versioni successive
- Assicurati che il file di build dell'app utilizzi i seguenti valori:
- Un
minSdkVersion
pari o superiore a 16 - Un
compileSdkVersion
pari o superiore a 28
- Un
iOS
- Utilizza Xcode 13 o versioni successive
- Scegli come target iOS 10.0 o versioni successive
Configura l'app nell'account AdMob
Registra la tua app come app AdMob procedendo nel seguente modo:
Accedi o registrati a un account AdMob.
Registra la tua app con AdMob. Questo passaggio crea un'app AdMob con un ID app AdMob univoco che dovrai utilizzare più avanti in questa guida.
Installa l'SDK C++ Google Mobile Ads
Poiché l'SDK Google Mobile Ads C++ si trova nello spazio dei nomi firebase::gma
, scarica l'SDK Firebase C++ e decomprimilo in una directory a tua scelta.
L'SDK di Firebase C++ non è specifico per la piattaforma, ma richiede configurazioni di librerie specifiche per piattaforma.
Android
Ti consigliamo di utilizzare CMake, ma puoi trovare le istruzioni per ndk-build nella nostra guida introduttiva all'SDK Firebase C++ per collegare libfirebase_app.a
e libfirebase_gma.a
alla tua app.
Nel file
gradle.properties
del tuo progetto, specifica la posizione dell'SDK decompresso:systemProp.firebase_cpp_sdk.dir=FULL_PATH_TO_SDK
Al file
settings.gradle
del tuo progetto, aggiungi il seguente contenuto: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"
Al file Gradle del modulo (a livello di app), di solito
app/build.gradle
, aggiungi i seguenti contenuti, che includono la dipendenza della libreria per l'SDK C++ di Google Mobile Ads.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 }
Al file
CMakeLists.txt
del progetto, aggiungi il contenuto seguente.# 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}")
Sincronizza la tua app per assicurarti che tutte le dipendenze abbiano le versioni necessarie.
iOS
I passaggi riportati in questa sezione sono un esempio di come aggiungere l'SDK Google Mobile Ads C++ al tuo progetto iOS.
Scarica CocoaPods versione 1 o successiva eseguendo:
sudo gem install cocoapods --pre
Aggiungi il pod Google Mobile Ads dall'SDK non compresso.
Crea un Podfile se non ne hai già uno:
cd APP_DIRECTORY
pod init
Al tuo podfile, aggiungi i pod per l'SDK Google Mobile Ads C++, l'SDK Google User Messaging Platform e l'SDK Firebase core minimo (richiesto dall'SDK GMA C++):
pod 'Firebase/CoreOnly' pod 'Google-Mobile-Ads-SDK' pod 'GoogleUserMessagingPlatform'
Installa i pod, quindi apri il file
.xcworkspace
in Xcode.pod install
open APP.xcworkspace
Aggiungi al progetto i seguenti framework dall'SDK Firebase C++:
xcframeworks/firebase.xcframework
xcframeworks/firebase_gma.xcframework
Ecco fatto! La tua app C++ è configurata per utilizzare l'SDK Google Mobile Ads C++ senza altri servizi Firebase.
Configura l'ID app AdMob della tua app
Android
Segui il passaggio 3 della sezione Configura la tua app come descritto nella guida per Android all'SDK Mobile Ads, poi torna in questa pagina.
iOS
Segui il passaggio Aggiorna il file Info.plist come descritto nella guida per iOS all'SDK Mobile Ads, quindi torna a questa pagina.
Inizializzare l'SDK Google Mobile Ads
Prima di caricare gli annunci, fai in modo che la tua app inizializza l'SDK Google Mobile Ads C++ chiamando firebase::gma::Initialize()
, che inizializza l'SDK e completa un firebase::Future
al termine dell'inizializzazione (o dopo un timeout di 30 secondi). Questa operazione deve essere eseguita una sola volta, idealmente al momento del lancio dell'app.
Gli annunci possono essere precaricati dall'SDK Google Mobile Ads C++ o dagli SDK del partner di mediazione al momento della chiamata a Initialize()
. Se devi ottenere il consenso degli utenti nello
Spazio economico europeo (SEE), impostare flag specifici per le richieste (ad esempio
tag_for_child_directed_treatment
o tag_for_under_age_of_consent
) oppure
intervenire in altro modo prima di caricare gli annunci, assicurati di farlo richiamando
firebase::gma::SetRequestConfiguration()
prima di inizializzare l'SDK Google Mobile
Ads C++. Per ulteriori informazioni, consulta la nostra guida sul targeting.
Ecco un esempio di come chiamare 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.
}
Utilizza un Future
per monitorare lo stato di completamento di una chiamata di metodo
Un Future
consente di determinare lo stato di completamento delle
chiamate al metodo asincrono.
Ad esempio, quando la tua app chiama firebase::gma::Initialize()
, viene creato e restituito un nuovo
firebase::Future
. L'app può quindi eseguire il polling di
status()
di Future
per determinare il completamento dell'inizializzazione.
Al termine, l'app può richiamare result()
per ottenere l'elemento AdapterInitializationStatus
risultante.
I metodi che restituiscono un valore Future
hanno un metodo "Ultimo risultato" corrispondente, che
le app possono utilizzare per recuperare l'elemento Future
più recente per una determinata azione. Ad esempio, firebase::gma::Initialize()
ha un metodo corrispondente chiamato
firebase::gma::InitializeLastResult()
, che restituisce un Future
che la tua app
può utilizzare per controllare lo stato dell'ultima chiamata a firebase::gma::Initialize()
.
Se lo stato di Future
è completo e il codice di errore è firebase::gma::kAdErrorCodeNone
, l'operazione è stata completata correttamente.
Puoi anche registrare i callback da richiamare quando viene completato un Future
. In
alcuni casi, il callback verrà eseguito in un thread diverso, quindi assicurati
che il tuo codice sia sicuro per i thread. Questo snippet di codice utilizza un puntatore a funzione per il 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.
}
}
Seleziona un formato dell'annuncio
L'SDK C++ per Google Mobile Ads è stato importato e puoi implementare un annuncio. AdMob offre vari formati di annunci, tra cui scegliere quello più adatto all'esperienza utente della tua app.
Banner
Annunci rettangolari che vengono visualizzati nella parte superiore o inferiore dello schermo del dispositivo. Gli annunci banner rimangono sullo schermo mentre gli utenti interagiscono con l'app e possono aggiornarsi automaticamente dopo un determinato periodo di tempo. Se non hai mai utilizzato la pubblicità per il mobile, l'offerta è un ottimo punto di partenza.
Implementare gli annunci banner
Interstitial
Annunci a schermo intero che coprono l'interfaccia di un'app fino alla chiusura dell'utente. Sono ideali per le pause naturali del flusso di esecuzione di un'app, ad esempio tra i livelli di un gioco o subito dopo il completamento di un'attività.
Implementare gli annunci interstitial
Con premio
Annunci che premiano gli utenti per la visione di brevi video e l'interazione con annunci e sondaggi demo. Utilizzato per la monetizzazione di app free-to-play.