Ten przewodnik jest przeznaczony dla wydawców, którzy chcą zarabiać na aplikacji w C++, korzystając z AdMob bez korzystania z Firebase. Jeśli planujesz uwzględnić Firebase w swojej aplikacji lub rozważasz taką możliwość, zapoznaj się z tą wersją tego przewodnika dotyczącą AdMob z Firebase.
Pierwszym krokiem, który musisz wykonać, aby zacząć wyświetlać reklamy i zarabiać, jest integracja pakietu SDK do reklam mobilnych Google w C++ z Twoją aplikacją. Po zintegrowaniu pakietu SDK możesz wybrać format reklamy, np. reklamę pełnoekranową lub reklamę z nagrodą, i postępować zgodnie z instrukcjami, aby ją zaimplementować.
Pakiet SDK do reklam mobilnych Google w języku C++ zawiera pakiety SDK do reklam mobilnych Google na iOS i Androida i jest dostępny tylko na tych platformach. Pakiet SDK Google Mobile Ads w C++ korzysta z elementów Firebase w C++, aby obsługiwać operacje asynchroniczne, dlatego znajduje się w przestrzeni nazw firebase::gma
.
Jeśli po raz pierwszy korzystasz z tego przewodnika, pobierz i użyj aplikacji Google Mobile Ads C++ na potrzeby testów.
Wymagania wstępne
Android
- Użyj Android Studio w wersji 3.2 lub nowszej.
- Sprawdź, czy w pliku kompilacji Twojej aplikacji znajdują się te wartości:
- wartość
minSdkVersion
16 lub wyższa. - wartość
compileSdkVersion
wynosząca co najmniej 28.
- wartość
iOS
- Użyj Xcode 13 lub nowszej wersji.
- kierowanie na system iOS w wersji 10.0 lub nowszej,
Konfigurowanie aplikacji na koncie AdMob
Aby zarejestrować aplikację jako aplikację AdMob, wykonaj te czynności:
Zaloguj się lub zarejestruj się na konto AdMob.
Zarejestruj aplikację w AdMob. Na tym etapie tworzysz aplikację AdMob z unikalnym identyfikatorem aplikacji AdMob, którego użyjesz później w tym przewodniku.
Instalowanie pakietu SDK do reklam mobilnych Google w C++
Pakiet SDK Google Mobile Ads w C++ znajduje się w przestrzeni nazw firebase::gma
, więc pobierz pakiet SDK Firebase w C++, a następnie rozpakuj go do wybranego katalogu.
Pakiet SDK Firebase C++ nie jest przeznaczony tylko dla jednej platformy, ale wymaga konfiguracji biblioteki dla danej platformy.
Android
Zalecamy użycie CMake, ale instrukcje dotyczące ndk-build znajdziesz w ogólnym Przewodniku po pakiecie SDK Firebase C++, który pomoże Ci połączyć libfirebase_app.a
i libfirebase_gma.a
z aplikacją.
W pliku
gradle.properties
projektu określ lokalizację rozpakowanego pakietu SDK:systemProp.firebase_cpp_sdk.dir=FULL_PATH_TO_SDK
Dodaj do pliku
settings.gradle
projektu te informacje: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"
Do pliku Gradle modułu (na poziomie aplikacji) – zwykle
app/build.gradle
– dodaj ten ciąg, który zawiera zależność biblioteki od pakietu SDK do reklam mobilnych Google w 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 }
Dodaj do pliku
CMakeLists.txt
projektu te treści.# 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}")
Zsynchronizuj aplikację, aby wszystkie zależności na pewno miały odpowiednie wersje.
iOS
W tej sekcji znajdziesz przykład dodawania do projektu na iOS pakietu SDK do reklam mobilnych Google w C++.
Aby uzyskać wersję CocoaPods 1 lub nowszą, wykonaj te czynności:
sudo gem install cocoapods --pre
Dodaj moduł reklam mobilnych Google z rozpakowanego pakietu SDK.
Utwórz plik Podfile, jeśli go nie masz:
cd APP_DIRECTORY
pod init
Dodaj do pliku Podfile moduły podrzędne pakietu SDK Google Mobile Ads w C++, pakietu SDK platformy do personalizowania wiadomości wyświetlanych użytkownikom i minimalnego pakietu SDK Firebase (wymagany przez pakiet SDK GMA C++):
pod 'Firebase/CoreOnly' pod 'Google-Mobile-Ads-SDK' pod 'GoogleUserMessagingPlatform'
Zainstaluj moduły, a potem otwórz plik
.xcworkspace
w Xcode.pod install
open APP.xcworkspace
Dodaj do projektu te frameworki z pakietu SDK Firebase C++:
xcframeworks/firebase.xcframework
xcframeworks/firebase_gma.xcframework
Wszystko gotowe Twoja aplikacja w C++ jest skonfigurowana do korzystania z pakietu SDK Google Mobile Ads w C++, bez żadnych innych usług Firebase.
Konfigurowanie identyfikatora aplikacji AdMob
Android
Wykonaj krok 3 w sekcji Konfigurowanie aplikacji zgodnie z instrukcjami podanymi w przewodniku dotyczącym pakietu SDK do reklam mobilnych na Androida, a potem wróć na tę stronę.
iOS
Wykonaj krok Zaktualizuj plik Info.plist zgodnie z instrukcjami podanymi w przewodniku po pakiecie SDK do reklam mobilnych na iOS, a potem wróć na tę stronę.
Inicjalizacja pakietu SDK do reklam mobilnych Google
Przed wczytaniem reklam aplikacja musi zainicjować pakiet SDK do reklam mobilnych Google w języku C++, wywołując funkcję firebase::gma::Initialize()
, która zainicjuje pakiet SDK i po jego zakończeniu (lub po 30 sekundach bezczynności) wywoła funkcję firebase::Future
. Wystarczy to zrobić tylko raz, najlepiej podczas uruchamiania aplikacji.
Reklamy mogą być wstępnie wczytywane przez pakiet SDK do reklam mobilnych Google w C++ lub pakiety SDK partnera zapośredniczenia po wywołaniu funkcji Initialize()
. Jeśli musisz uzyskać zgodę użytkowników z Europejskiego Obszaru Gospodarczego, ustawić flagi związane z żądaniem (np. tag_for_child_directed_treatment
lub tag_for_under_age_of_consent
) albo podjąć inne działanie przed załadowaniem reklam, wywołaj funkcję firebase::gma::SetRequestConfiguration()
przed zainicjowaniem pakietu SDK do reklam mobilnych Google w C++. Więcej informacji znajdziesz w przewodniku Cele reklamowe.
Oto przykład wywołania funkcji 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.
}
Używanie Future
do monitorowania stanu zakończenia wywołania metody
Future
umożliwia określenie stanu zakończenia asynchronicznych wywołań metody.
Gdy na przykład aplikacja wywoła funkcję firebase::gma::Initialize()
, zostanie utworzony i zwrócony nowy obiekt firebase::Future
. Aplikacja może następnie sprawdzać status()
Future
, aby określić, kiedy inicjalizacja została zakończona.
Po zakończeniu działania metoda result()
może wywołać metodę result()
, aby uzyskać parametr AdapterInitializationStatus
.
Metody zwracające wartość Future
mają odpowiadającą metodę „ostatniego wyniku”, której aplikacje mogą używać do pobierania najnowszego Future
dla danego działania. Na przykład firebase::gma::Initialize()
ma odpowiednią metodę o nazwie firebase::gma::InitializeLastResult()
, która zwraca wartość Future
, której Twoja aplikacja może użyć do sprawdzenia stanu ostatniego wywołania funkcji firebase::gma::Initialize()
.
Jeśli stan Future
to „complete” (ukończono) i jego kod błędu to firebase::gma::kAdErrorCodeNone
, oznacza to, że operacja została ukończona pomyślnie.
Możesz też zarejestrować wywołania zwrotne, które będą wywoływane po zakończeniu Future
. W niektórych przypadkach wywołanie zwrotne będzie wykonywane w innym wątku, dlatego upewnij się, że Twój kod jest bezpieczny w takim przypadku. Ten fragment kodu używa wskaźnika funkcji do wywołania zwrotnego:
// 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.
}
}
Wybierz format reklamy
Pakiet SDK do reklam mobilnych Google w języku C++ został zaimportowany, więc możesz zaimplementować reklamę. AdMob oferuje różne formaty reklam, więc możesz wybrać ten, który najlepiej pasuje do wrażeń użytkowników Twojej aplikacji.
Baner
Prostokątne reklamy wyświetlane u góry lub u dołu ekranu urządzenia. Banery reklamowe pozostają na ekranie, gdy użytkownicy wchodzą w interakcję z aplikacją, i mogą być automatycznie odświeżane po upływie określonego czasu. Jeśli dopiero zaczynasz przygodę z reklamami mobilnymi, warto zacząć od nich.
Pełnoekranowa
reklamy pełnoekranowe, które zakrywają interfejs aplikacji, dopóki użytkownik ich nie zamknie; Najlepiej sprawdzają się w naturalnych przerwach w wykonywaniu aplikacji, np. między poziomami gry lub tuż po ukończeniu zadania.
Wdrażanie reklam pełnoekranowych
Z nagrodą
Reklamy, które umożliwiają nagradzanie użytkowników w zamian za oglądanie krótkich filmów, wchodzenie w interakcje z reklamami demonstracyjnymi gier oraz wypełnianie ankiet. Służy do zarabiania na bezpłatnych aplikacjach.