Este guia é destinado a publishers que querem monetizar um app em C++ com a AdMob sem usar o Firebase. Se você pretende ou considera incluir o Firebase no seu app, consulte a versão deste guia para AdMob com Firebase em vez disso.
Integrar o SDK dos anúncios para dispositivos móveis do Google para C++ a um app é a primeira etapa para exibir anúncios e gerar receita. Depois de integrar o SDK, escolha um formato de anúncio, como intersticial ou premiado, e siga as etapas para implementá-lo.
O SDK dos anúncios para dispositivos móveis do Google para C++ envolve os SDKs dos anúncios para dispositivos móveis do Google para iOS e Android e só está disponível nessas plataformas. O SDK dos anúncios para dispositivos móveis do Google para C++ usa construções do Firebase para C++ para oferecer suporte a operações assíncronas. Por isso, ele reside no namespace firebase::gma.
Pré-requisitos
Android
- Use o Android Studio 3.2 ou versões mais recentes.
- O arquivo de build do app precisa usar estes valores:
- Um
minSdkVersionde 16 ou mais recente - Um
compileSdkVersionde 28 ou mais recente
- Um
iOS
- Use o Xcode 13 ou versões mais recentes
- Segmentar o iOS 10.0 ou versões mais recentes
Configurar o app na conta da AdMob
Siga estas etapas para registrar o aplicativo como um app da AdMob:
Faça login ou se inscreva para em uma conta da AdMob.
Registre seu app na AdMob. Essa etapa cria um ID do app da AdMob exclusivo, que será necessário mais adiante neste guia.
Instalar o SDK dos anúncios para dispositivos móveis do Google para C++
Como o SDK dos anúncios para dispositivos móveis do Google para C++ reside no namespace firebase::gma,
é necessário fazer download do SDK do Firebase para C++,
e descompactá-lo no diretório desejado.
O SDK do Firebase para C++ não é específico de uma plataforma, mas requer configurações de bibliotecas que são.
Android
Recomendamos o uso do CMake, mas é possível encontrar instruções para o ndk-build no nosso
Guia de iniciação do SDK do Firebase para C++
para
vincular libfirebase_app.a e libfirebase_gma.a ao seu app.
No arquivo
gradle.propertiesdo projeto, especifique o local do SDK descompactado:systemProp.firebase_cpp_sdk.dir=FULL_PATH_TO_SDKNo arquivo
settings.gradledo projeto, adicione o conteúdo a seguir: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"No arquivo do Gradle do seu módulo no nível do app, que geralmente é
app/build.gradle, adicione o conteúdo a seguir, que inclui a dependência da biblioteca do SDK dos anúncios para dispositivos móveis do Google para 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 }No arquivo
CMakeLists.txtdo projeto, adicione o conteúdo a seguir.# 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}")Sincronize seu app para garantir que todas as dependências tenham as versões necessárias.
iOS
As etapas desta seção são um exemplo de como adicionar o SDK dos anúncios para dispositivos móveis do Google para C++ ao seu projeto do iOS.
Faça download do CocoaPods versão 1 ou mais recente executando:
sudo gem install cocoapods --preAdicione o pod de anúncios para dispositivos móveis do Google a partir do SDK descompactado.
Crie um Podfile, se ainda não tiver um:
cd APP_DIRECTORYpod initNo seu Podfile, adicione os pods do SDK dos anúncios para dispositivos móveis do Google para C++, o SDK da plataforma de mensagens de usuários do Google e o SDK principal mínimo do Firebase (exigido pelo SDK dos anúncios para dispositivos móveis do Google para C++):
pod 'Firebase/CoreOnly' pod 'Google-Mobile-Ads-SDK' pod 'GoogleUserMessagingPlatform'Instale os pods e abra o arquivo
.xcworkspaceno Xcode.pod installopen APP.xcworkspaceAdicione os seguintes frameworks do SDK do Firebase para C++ ao projeto:
xcframeworks/firebase.xcframeworkxcframeworks/firebase_gma.xcframework
Tudo pronto! Seu app em C++ está configurado para usar o SDK dos anúncios para dispositivos móveis do Google para C++ sem outros serviços do Firebase.
Configurar o ID do app da AdMob
Android
Siga a etapa 3 de Configurar seu app, conforme descrito no guia do SDK dos anúncios para dispositivos móveis do Android , e volte a esta página.
iOS
Siga a etapa Atualizar o Info.plist , conforme descrito no guia do SDK dos anúncios para dispositivos móveis do iOS, e volte a esta página.
Inicializar o SDK do Google Mobile Ads
Antes de carregar anúncios, chame firebase::gma::Initialize() para que o app inicialize o SDK dos anúncios para dispositivos móveis do Google para C++. Isso vai inicializar o SDK e concluir um firebase::Future quando a inicialização terminar ou após um tempo limite de 30 segundos. Isso só precisa ser feito uma vez, de preferência na inicialização do app.
Os anúncios podem ser pré-carregados pelo SDK dos anúncios para dispositivos móveis do Google para C++ ou de parceiros de mediação ao chamar Initialize(). Se você precisar do consentimento de usuários no Espaço Econômico Europeu (EEE), definir flags específicas de solicitações, como tag_for_child_directed_treatment ou tag_for_under_age_of_consent, ou entrar em ação antes de carregar os anúncios, faça isso invocando firebase::gma::SetRequestConfiguration() antes de inicializar o SDK dos anúncios para dispositivos móveis do Google para C++. Para mais informações, consulte nosso
guia de segmentação.
Veja um exemplo de como chamar 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.
}
Usar Future para monitorar o status de conclusão de uma chamada de método
Um Future permite determinar o status de conclusão das suas chamadas de métodos assíncronas.
Por exemplo, quando seu app chama firebase::gma::Initialize(), um novo firebase::Future é criado e retornado. Seu app vai poder consultar o status() do Future para determinar quando a inicialização foi concluída.
Depois da conclusão, seu app vai poder invocar result() para receber o AdapterInitializationStatus resultante.
Os métodos que retornam um Future têm um método de "último resultado" correspondente que os apps podem usar para recuperar o Future mais recente de uma determinada ação. Por exemplo, firebase::gma::Initialize() tem um método correspondente chamado firebase::gma::InitializeLastResult(), que retorna um Future que pode ser usado pelo seu app para verificar o status da última chamada para firebase::gma::Initialize().
Se o status de Future for concluído e o código do erro for firebase::gma::kAdErrorCodeNone, significa que a operação foi concluída com sucesso.
Além disso, callbacks podem ser registrados para que sejam invocados quando um Future for concluído. Em alguns casos, o callback vai ser executado em uma linha de execução diferente. Verifique se o código é thread-safe. Este snippet de código usa um ponteiro de função para o 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.
}
}
Selecionar um formato de anúncio
O SDK dos anúncios para dispositivos móveis do Google para C++ foi importado e você já pode implementar um anúncio. Na AdMob, há vários formatos diferentes de anúncio. Escolha a opção que melhor se ajusta à experiência do usuário no seu aplicativo.
Banner
Anúncios retangulares que aparecem na parte de cima ou de baixo da tela do dispositivo. Os anúncios de banner permanecem na tela enquanto os usuários interagem com o aplicativo e podem ser atualizados automaticamente após um determinado período. Se você começou a usar a publicidade para dispositivos móveis agora, eles são uma ótima opção.
Implementar anúncios de banner
Intersticial
Anúncios de tela cheia que cobrem a interface de um app até serem fechados pelo usuário. A melhor forma de usá-los é em pausas naturais no fluxo de execução de um aplicativo, por exemplo, entre níveis de um jogo ou após a conclusão de uma tarefa.
Implementar anúncios intersticiais
Premiado
Anúncios que recompensam os usuários por assistir vídeos curtos e interagir com pesquisas e anúncios jogáveis. Usado para gerar receita com apps sem custo para jogar.