Ten przewodnik jest przeznaczony dla wydawców, którzy chcą zarabiać w AdMob na aplikacjach w C++ bez Firebase. Jeśli planujesz dodać Firebase do swojej aplikacji lub rozważasz taką możliwość, zapoznaj się z wersją tego przewodnika dotyczącą AdMob z Firebase.
Integracja pakietu SDK do reklam mobilnych Google w języku C++ z aplikacją to pierwszy krok do wyświetlania reklam i zarabiania. Po zintegrowaniu pakietu SDK możesz wybrać format reklamy, na przykład pełnoekranową lub z nagrodą, i wykonać odpowiednie czynności, aby go zaimplementować.
Pakiet SDK do reklam mobilnych Google w C++ wchodzi w skład pakietu SDK do reklam mobilnych Google na iOS i Androida i jest dostępny tylko na tych platformach. Pakiet SDK do reklam mobilnych Google w języku C++ wykorzystuje konstrukcje C++ Firebase do obsługi operacji asynchronicznych, więc znajduje się w przestrzeni nazw firebase::gma
.
Jeśli po raz pierwszy korzystasz z tego przewodnika, zalecamy pobranie aplikacji testowej C++ na reklamy mobilne Google+ i jej kontynuowanie.
Wymagania wstępne
Android
- Użyj Android Studio w wersji 3.2 lub nowszej
- Upewnij się, że plik kompilacji aplikacji zawiera te wartości:
- wartość
minSdkVersion
wynosząca co najmniej 16. - wartość
compileSdkVersion
wynosząca co najmniej 28.
- wartość
iOS
- Używaj Xcode w wersji 13 lub nowszej
- Kierowanie na iOS w wersji 10.0 lub nowszej
Konfigurowanie aplikacji na koncie AdMob
Zarejestruj swoją aplikację jako aplikację w AdMob, wykonując te czynności:
Zaloguj się lub zarejestruj konto AdMob.
Zarejestruj aplikację w AdMob. Po wykonaniu tego kroku utworzysz aplikację w AdMob z unikalnym identyfikatorem aplikacji AdMob, który będzie potrzebny w dalszej części tego przewodnika.
Zainstaluj pakiet SDK do reklam mobilnych Google w C++
Pakiet SDK C++ do reklam mobilnych Google znajduje się w przestrzeni nazw firebase::gma
, dlatego pobierz pakiet SDK Firebase C++, a następnie rozpakuj go do wybranego katalogu.
Pakiet Firebase C++ SDK nie jest związany z konkretną platformą, ale wymaga konfiguracji biblioteki na tej platformie.
Android
Zalecamy korzystanie z CMake, ale instrukcje tworzenia ndk-build znajdziesz w ogólnym przewodniku dla początkujących po pakiecie Firebase C++ SDK, aby dowiedzieć się, jak połączyć ze swoją aplikacją libfirebase_app.a
i libfirebase_gma.a
.
W pliku
gradle.properties
projektu określ lokalizację rozpakowanego pakietu SDK:systemProp.firebase_cpp_sdk.dir=FULL_PATH_TO_SDK
Do pliku
settings.gradle
projektu dodaj te treści: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 poniższą treść, która obejmuje 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 }
Do pliku
CMakeLists.txt
projektu dodaj podane niżej 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 upewnić się, że wszystkie zależności mają niezbędne wersje.
iOS
W tej sekcji znajdziesz przykład dodawania pakietu SDK do reklam mobilnych Google w języku C++ do projektu na iOS.
Pobierz CocoaPods w wersji 1 lub nowszej, uruchamiając polecenie:
sudo gem install cocoapods --pre
Dodaj blok reklam mobilnych Google z rozpakowanego pakietu SDK.
Utwórz plik Podfile, jeśli jeszcze go nie masz:
cd APP_DIRECTORY
pod init
Do pliku Pod dodaj bloki pakietu SDK C++ do reklam mobilnych Google, pakietu SDK platformy do personalizowania wiadomości wyświetlanych użytkownikom oraz minimalnego podstawowego pakietu SDK Firebase (wymagane przez pakiet SDK GMA C++):
pod 'Firebase/CoreOnly' pod 'Google-Mobile-Ads-SDK' pod 'GoogleUserMessagingPlatform'
Zainstaluj pody, a następnie otwórz plik
.xcworkspace
w Xcode.pod install
open APP.xcworkspace
Dodaj do projektu te platformy z pakietu SDK Firebase C++:
xcframeworks/firebase.xcframework
xcframeworks/firebase_gma.xcframework
Wszystko gotowe. Twoja aplikacja w C++ jest skonfigurowana tak, aby używać pakietu SDK C++ do reklam mobilnych Google bez żadnych innych usług Firebase.
Skonfiguruj identyfikator aplikacji AdMob dla swojej aplikacji
Android
Wykonaj krok 3 w sekcji Skonfiguruj aplikację zgodnie z opisem w przewodniku po pakiecie SDK do reklam mobilnych na Androida, a potem wróć na tę stronę.
iOS
Wykonaj krok aktualizacji pliku Info.plist zgodnie z opisem w przewodniku po pakiecie SDK do reklam mobilnych na iOS, a potem wróć na tę stronę.
Zainicjowanie pakietu SDK do reklam mobilnych Google
Przed wczytaniem reklam aplikacja zainicjuj pakiet SDK do reklam mobilnych Google w języku C++, wywołując firebase::gma::Initialize()
, który zainicjuje pakiet SDK i wykona firebase::Future
po zakończeniu inicjowania (lub po upływie 30 sekund). Wystarczy to zrobić tylko raz, najlepiej na etapie uruchamiania aplikacji.
Reklamy mogą być wstępnie wczytywane przez pakiet SDK do reklam mobilnych Google w języku C++ lub pakiety SDK partnerów zapośredniczenia po wywołaniu metody Initialize()
. Jeśli musisz uzyskać zgodę użytkowników z Europejskiego Obszaru Gospodarczego, ustawić flagi dotyczące żądań (takie jak tag_for_child_directed_treatment
lub tag_for_under_age_of_consent
) lub podjąć inne działania przed wczytaniem reklam, pamiętaj o wywołaniu firebase::gma::SetRequestConfiguration()
przed zainicjowaniem pakietu SDK do reklam mobilnych Google w języku angielskim. Więcej informacji znajdziesz w przewodniku Kierowanie.
Oto przykład, jak wywołać 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 interfejsu Future
do monitorowania stanu ukończenia wywołania metody
Future
umożliwia sprawdzanie stanu ukończenia wywołań metod asynchronicznych.
Gdy na przykład aplikacja wywołuje metodę firebase::gma::Initialize()
, tworzony jest i zwracany nowy element firebase::Future
. Aplikacja może następnie sondować status()
z metody Future
, aby określić, kiedy inicjowanie się zakończyło.
Po zakończeniu aplikacja może wywołać result()
, aby uzyskać wynikowy AdapterInitializationStatus
.
Metody zwracające wartość Future
mają odpowiadającą im metodę „ostatniego wyniku”, którą aplikacje mogą używać do pobierania najnowszego parametru 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 aplikacja może używać do sprawdzenia stanu ostatniego wywołania funkcji firebase::gma::Initialize()
.
Jeśli stan obiektu Future
jest ukończony, a jego kod błędu to firebase::gma::kAdErrorCodeNone
, operacja została zakończona.
Możesz też zarejestrować wywołania zwrotne, które będą wywoływane po zakończeniu działania Future
. W niektórych przypadkach wywołanie zwrotne będzie działać w innym wątku, więc upewnij się, że Twój kod jest bezpieczny dla wątku. Ten fragment kodu korzysta ze wskaźnika funkcji 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 i możesz już wdrożyć reklamę. AdMob oferuje wiele różnych formatów reklam, dzięki czemu możesz wybrać ten, który najlepiej pasuje do 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 korzystają z aplikacji, i mogą być automatycznie odświeżane po określonym czasie. Jeśli nie masz doświadczenia z reklamami mobilnymi, jest to dobry punkt wyjścia.
Pełnoekranowa
Reklamy pełnoekranowe zakrywające interfejs aplikacji, dopóki użytkownik nie zamknie ich. Najlepiej sprawdza się w naturalnych przerwach w działaniu aplikacji, np. między poziomami gry lub tuż po ukończeniu zadania.
Stosowanie reklam pełnoekranowych
Otrzymano
Reklamy, które nagradzają użytkowników za oglądanie krótkich filmów, wchodzenie w interakcje z reklamami demonstracyjnymi gry oraz wypełnianie ankiet. Służy do zarabiania na aplikacjach bezpłatnych.