Inizia


Questa guida è rivolta ai publisher che vogliono monetizzare un'app C++ con AdMob, senza utilizzando Firebase. Se prevedi di includere Firebase nella tua app o se stai prendendo in considerazione l'idea, consulta il documento AdMob con Firebase di questo guida.

L'integrazione dell'SDK Google Mobile Ads C++ in un'app è il primo passo verso mostrare annunci e generare entrate. Una volta integrato l'SDK, puoi scegli un formato dell'annuncio, ad esempio interstitial o con premio e segui i passaggi per implementarla.

L'SDK Google Mobile Ads C++ aggrega gli SDK Google Mobile Ads per iOS e Android, ed è disponibile solo su queste piattaforme. L'SDK Google Mobile Ads C++ rende utilizzare i costrutti C++ di Firebase per supportare le operazioni asincrone, in modo che risiedono nello spazio dei nomi firebase::gma.

Se è la prima volta che consulta questa guida, ti consigliamo di scaricare e seguire il test utilizzando il test C++ sugli annunci per dispositivi mobili di Google Google Cloud.

Prerequisiti

Android

  • Utilizzare Android Studio 3.2 o versioni successive
  • Assicurati che il file di build dell'app utilizzi i seguenti valori:
    • Un minSdkVersion di 16 o superiore
    • Un compileSdkVersion di 28 o superiore

iOS

  • Usa Xcode 13 o versioni successive
  • Scegli come target iOS 10.0 o versioni successive

Configura l'app nel tuo account AdMob

Per registrare la tua app come app AdMob:

  1. Accedi a o registrati per un account AdMob.

  2. Registra la tua app con AdMob. Questo passaggio crea un'istanza con un ID app AdMob univoco che sarà necessario più avanti in questa guida.

Installa l'SDK Google Mobile Ads C++

Poiché l'SDK Google Mobile Ads C++ si trova nello spazio dei nomi firebase::gma, scarica l'SDK Firebase C++, e quindi decomprimilo in una directory a tua scelta.

L'SDK 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 nel nostro generale SDK Firebase C++ per iniziare Guida per collega libfirebase_app.a e libfirebase_gma.a alla tua app.

  1. Nel file gradle.properties del progetto, specifica la posizione SDK decompresso:

    systemProp.firebase_cpp_sdk.dir=FULL_PATH_TO_SDK
    
  2. Al file settings.gradle del progetto, aggiungi i seguenti contenuti:

    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. Al file Gradle del modulo (a livello di app), di solito app/build.gradle: aggiungi i seguenti contenuti, tra cui: dipende dalla libreria per l'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
    }
    
  4. Al file CMakeLists.txt del progetto, aggiungi i contenuti seguenti.

    # 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. Sincronizza la tua app per assicurarti che tutte le dipendenze abbiano le versioni necessarie.

iOS

I passaggi in questa sezione sono un esempio di come aggiungere il parametro C++ nel tuo progetto iOS.

  1. Per ricevere CocoaPods versione 1 o successiva, esegui:

    sudo gem install cocoapods --pre
    
  2. Aggiungi il pod Google Mobile Ads dall'SDK non compresso.

    1. Crea un Podfile se non ne hai già uno:

      cd APP_DIRECTORY
      pod init
      
    2. Al tuo podfile, aggiungi i pod per l'SDK Google Mobile Ads C++, SDK Google User Messaging Platform e SDK Firebase principale minimo (richiesto dall'SDK GMA C++):

      pod 'Firebase/CoreOnly'
      pod 'Google-Mobile-Ads-SDK'
      pod 'GoogleUserMessagingPlatform'
      
    3. Installa i pod, quindi apri il file .xcworkspace in Xcode.

      pod install
      open APP.xcworkspace
      
    4. Aggiungi al progetto i seguenti framework dall'SDK Firebase C++:

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

Ecco fatto! L'app C++ è configurata in modo da utilizzare l'SDK Google Mobile Ads C++ senza altri servizi Firebase.

Configurare l'ID app AdMob dell'app

Android

Segui il passaggio 3 di Configura la tua app come descritto dall'SDK Mobile Ads Guida di Android e poi tornare su questa pagina.

iOS

Segui il passaggio Aggiorna il file Info.plist come descritto dall'SDK Mobile Ads. Guida di iOS e poi torna indietro a questa pagina.

Inizializzare l'SDK Google Mobile Ads

Prima di caricare gli annunci, chiedi all'app di inizializzare l'SDK Google Mobile Ads C++ chiamando firebase::gma::Initialize(), che inizializza l'SDK e completa una firebase::Future una volta completata l'inizializzazione (o dopo 30 secondi timeout). 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 dei partner di mediazione al momento della chiamata a Initialize(). Se devi ottenere il consenso degli utenti nel Spazio economico europeo (SEE), imposta eventuali flag specifici per la richiesta (ad esempio, tag_for_child_directed_treatment o tag_for_under_age_of_consent) oppure in caso contrario, prima di caricare gli annunci, assicurati di farlo richiamando firebase::gma::SetRequestConfiguration() prima di inizializzare Google Mobile SDK Ads C++. Per ulteriori informazioni, consulta le 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 Future per monitorare lo stato di completamento di una chiamata al metodo

Un Future ti consente di determinare lo stato di completamento di chiamate al metodo asincrone.

Ad esempio, quando la tua app chiama firebase::gma::Initialize(), una nuova firebase::Future creato e restituito. L'app può quindi eseguire il polling status() di Future per determinare quando è stata completata l'inizializzazione. Al termine, l'app può richiamare result() per ottenere il risultato AdapterInitializationStatus.

I metodi che restituiscono un valore Future hanno un "ultimo risultato" corrispondente metodo che le app possono usare per recuperare gli elementi Future più recenti per una determinata azione. Per Ad esempio, firebase::gma::Initialize() ha un metodo corrispondente chiamato firebase::gma::InitializeLastResult(), che restituisce un Future che la tua app che puoi utilizzare per controllare lo stato dell'ultima chiamata a firebase::gma::Initialize().

Se lo stato di Future è completo e il relativo codice di errore è firebase::gma::kAdErrorCodeNone, l'operazione è stata completata correttamente.

Puoi anche registrare i callback da richiamare al completamento di un Future. Nella alcuni casi, il callback verrà eseguito su un thread diverso, quindi assicurati il codice sia sicuro per i thread. Questo snippet di codice utilizza un puntatore di funzione per 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 Google Mobile Ads C++ è stato importato e puoi implementare un annuncio. AdMob offre diversi formati dell'annuncio per consentirti di scegliere quello più adatto che si adatta meglio all'esperienza utente della tua app.

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 vengono aggiornate automaticamente dopo un certo periodo di tempo. Se non hai mai utilizzato un dispositivo mobile pubblicità, sono 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 nel 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 contenuti riproducibili annunci e sondaggi. Utilizzato per monetizzare le app free-to-play.

Implementare gli annunci con premio