Ten przewodnik jest przeznaczony dla wydawców, którzy chcą zarabiać na aplikacji w C++ za pomocą AdMob bez korzystania z Firebase. Jeśli planujesz uwzględnić Firebase w swojej aplikacji lub rozważasz taką możliwość, zapoznaj się z wersją tego przewodnika AdMob z Firebase.
Integracja pakietu SDK do reklam mobilnych Google w języku C++ z aplikacją to pierwszy krok do wyświetlania reklam i uzyskiwania przychodów. Gdy to zrobisz, możesz wybrać format reklamy, np. pełnoekranowej lub z nagrodą, i postępować zgodnie z instrukcjami, aby go zaimplementować.
Pakiet SDK do reklam mobilnych Google w C++ obejmuje pakiety SDK do reklam mobilnych Google na iOS i Androida i jest dostępny tylko na tych platformach. Pakiet SDK do reklam mobilnych Google w C++ korzysta z konstrukcji Firebase w C++ do obsługi operacji asynchronicznych, dlatego znajduje się w przestrzeni nazw firebase::gma
.
Jeśli po raz pierwszy korzystasz z tego przewodnika, zalecamy pobranie i wykorzystanie aplikacji testowej Google Mobile Ads C++.
Wymagania wstępne
Android
- Android Studio w wersji 3.2 lub nowszej,
- Sprawdź, czy w pliku kompilacji Twojej aplikacji znajdują się te wartości:
- wartość
minSdkVersion
wynosząca co najmniej 16. - wartość
compileSdkVersion
wynosząca co najmniej 28.
- wartość
iOS
- Używaj Xcode 13 lub nowszego
- kierować reklamy na urządzenia z systemem iOS 10.0 lub nowszym,
Konfigurowanie aplikacji na koncie AdMob
Aby zarejestrować aplikację jako aplikację AdMob:
Zaloguj się lub zarejestruj na koncie AdMob.
Zarejestruj aplikację w AdMob. W tym kroku utworzysz aplikację AdMob z unikalnym identyfikatorem aplikacji AdMob, który będzie potrzebny w dalszej części tego przewodnika.
Instalowanie pakietu SDK do reklam mobilnych Google w C++
Pakiet SDK do reklam mobilnych Google w C++ znajduje się w przestrzeni nazw firebase::gma
. Pobierz pakiet SDK Firebase w C++, a następnie rozpakuj go do wybranego katalogu.
Pakiet Firebase C++ SDK nie jest przeznaczony dla konkretnej platformy, ale wymaga konfiguracji bibliotek specyficznych dla platformy.
Android
Zalecamy używanie CMake, ale instrukcje dotyczące ndk-build znajdziesz w naszym 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 wiersze: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 na poziomie modułu (aplikacji) – zwykle
app/build.gradle
– dodaj te wiersze, które zawierają zależność biblioteki 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 wiersze:# 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
Czynności opisane w tej sekcji pokazują, jak dodać do projektu na iOS pakiet SDK do reklam mobilnych Google w C++.
Pobierz CocoaPods w wersji 1 lub nowszej, wpisując:
sudo gem install cocoapods --pre
Dodaj pod Google Mobile Ads z rozpakowanego pakietu SDK.
Utwórz plik Podfile, jeśli go nie masz:
cd APP_DIRECTORY
pod init
Do pliku Podfile dodaj pody pakietu Google Mobile Ads C++ SDK, pakietu SDK platformy do personalizowania wiadomości wyświetlanych użytkownikom i minimalnego pakietu SDK Firebase Core (wymaganego przez pakiet GMA C++ SDK):
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 Firebase C++ SDK:
xcframeworks/firebase.xcframework
xcframeworks/firebase_gma.xcframework
Wszystko gotowe Aplikacja w C++ jest skonfigurowana do korzystania z pakietu Google Mobile Ads C++ SDK bez żadnych innych usług Firebase.
Konfigurowanie identyfikatora aplikacji AdMob
Android
Wykonaj krok 3 z sekcji Konfigurowanie aplikacji zgodnie z opisem w przewodniku po pakiecie SDK do reklam mobilnych na Androida, a potem wróć na tę stronę.
iOS
Wykonaj krok Aktualizowanie pliku Info.plist zgodnie z opisem w przewodniku po pakiecie SDK do reklam mobilnych na iOS, a potem wróć na tę stronę.
Inicjowanie pakietu SDK do reklam mobilnych Google
Zanim aplikacja wczyta reklamy, musi zainicjować pakiet SDK do reklam mobilnych Google w C++ przez wywołanie funkcji firebase::gma::Initialize()
, która inicjuje pakiet SDK i wykonuje funkcję firebase::Future
po zakończeniu inicjowania (lub po 30 sekundach bezczynności). Należy to zrobić tylko raz, najlepiej przy uruchomieniu aplikacji.
Reklamy mogą być wstępnie wczytywane przez pakiet SDK do reklam mobilnych Google w C++ lub pakiety SDK partnerów zapośredniczenia po wywołaniu Initialize()
. Jeśli musisz uzyskać zgodę użytkowników z Europejskiego Obszaru Gospodarczego (EOG), ustawić flagi dotyczące konkretnego żądania (np. tag_for_child_directed_treatment
lub tag_for_under_age_of_consent
) albo podjąć inne działania przed wczytaniem reklam, zrób to, wywołując funkcję firebase::gma::SetRequestConfiguration()
przed zainicjowaniem pakietu SDK do reklam mobilnych Google w C++. Więcej informacji znajdziesz w naszym przewodniku po kierowaniu.
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żyj Future
, aby monitorować stan zakończenia wywołania metody
Future
umożliwia określenie stanu zakończenia wywołań metod asynchronicznych.
Na przykład gdy aplikacja wywołuje firebase::gma::Initialize()
, tworzony jest nowy obiekt firebase::Future
i zwracany jest jego identyfikator. Aplikacja może następnie wysyłać zapytania do status()
Future
, aby określić, kiedy inicjowanie zostało zakończone.
Po zakończeniu tego procesu aplikacja może wywołać funkcję result()
, aby uzyskać wynikowy AdapterInitializationStatus
.
Metody, które zwracają wartość Future
, mają odpowiednią metodę „ostatni wynik”, której aplikacje mogą używać do pobierania najnowszej wartości Future
dla danego działania. Na przykład klasa firebase::gma::Initialize()
ma odpowiednią metodę o nazwie firebase::gma::InitializeLastResult()
, która zwraca obiekt Future
, za pomocą którego aplikacja może sprawdzić stan ostatniego wywołania funkcji firebase::gma::Initialize()
.
Jeśli stan Future
to „complete”, a kod błędu to firebase::gma::kAdErrorCodeNone
, oznacza to, że operacja została zakończona.
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, więc upewnij się, że Twój kod jest bezpieczny dla wątków. 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 C++ został zaimportowany i możesz teraz wdrożyć reklamę. AdMob oferuje wiele różnych formatów reklam, dzięki czemu 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, to świetny sposób na rozpoczęcie.
Pełnoekranowa
Reklamy pełnoekranowe, które zakrywają interfejs aplikacji, dopóki użytkownik ich nie zamknie. Najlepiej używać ich w naturalnych przerwach w działaniu aplikacji, np. między poziomami gry lub tuż po ukończeniu zadania.
Wdrażanie reklam pełnoekranowych
Z nagrodą
Reklamy, które nagradzają użytkowników za oglądanie krótkich filmów i wchodzenie w interakcje z reklamami demonstracyjnymi gier oraz ankietami. Służy do zarabiania na bezpłatnych aplikacjach.