Ten przewodnik jest przeznaczony dla wydawców, którzy chcą zarabiać na aplikacji w języku C++ dzięki AdMob bez użycia Firebase. Jeśli planujesz umieścić Firebase w swojej aplikacji (lub tylko się na to zastanawiasz), zapoznaj się z wersją tego przewodnika dotyczącą AdMob z Firebase.
Zintegrowanie pakietu SDK C++ do reklam mobilnych Google z aplikacją to pierwszy krok do wyświetlania reklam i zarabiania. Po zintegrowaniu pakietu SDK możesz wybrać format reklamy, np. reklama pełnoekranowa lub reklama z nagrodą, i postępować zgodnie z instrukcjami implementacji.
Pakiet SDK do reklam mobilnych Google w języku C++ to pakiet SDK do reklam mobilnych Google na iOS i Androida. Jest on dostępny tylko na tych platformach. Pakiet SDK do reklam mobilnych Google w języku C++ korzysta z konstrukcji Firebase w C++ do obsługi operacji asynchronicznych, dlatego znajduje się w przestrzeni nazw firebase::gma
.
Jeśli korzystasz z tego przewodnika po raz pierwszy, zalecamy pobranie i postępowanie zgodnie ze wskazówkami w aplikacji testowej C++ do reklam mobilnych Google.
Wymagania wstępne
Android
- Korzystanie z Android Studio 3.2 lub nowszej wersji
- Plik kompilacji aplikacji musi zawierać te wartości:
- wartość
minSdkVersion
wynosząca co najmniej 16, - wartość
compileSdkVersion
wynosząca co najmniej 28,
- wartość
iOS
- Użyj Xcode 13 lub nowszej wersji
- Kierowanie na system iOS 10.0 lub nowszy
Konfigurowanie aplikacji na koncie AdMob
Aby zarejestrować swoją aplikację jako aplikację AdMob, wykonaj te czynności:
Zaloguj się na konto AdMob lub zarejestruj się.
Zarejestruj swoją aplikację w AdMob. W tym kroku utworzysz aplikację AdMob z unikalnym identyfikatorem aplikacji AdMob, który jest potrzebny w dalszej części tego przewodnika.
Zainstaluj pakiet SDK do reklam mobilnych Google w C++
Ponieważ pakiet SDK C++ do reklam mobilnych Google znajduje się w przestrzeni nazw firebase::gma
, pobierz pakiet Firebase C++ SDK i rozpakuj go do wybranego katalogu.
Pakiet Firebase C++ SDK nie jest związany z konkretną platformą, ale wymaga konfiguracji biblioteki na potrzeby danej platformy.
Android
Zalecamy korzystanie z CMake, ale instrukcje dotyczące ndk-build znajdziesz w naszym ogólnym Przewodniku dla początkujących dotyczącym pakietu SDK Firebase C++, który łączy libfirebase_app.a
i libfirebase_gma.a
ze swoją aplikacją.
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 tę treść: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 następującą treść, która obejmuje zależność biblioteki pakietu SDK C++ do reklam mobilnych Google.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 poniższą treść.# 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 mieć pewność, że wszystkie zależności mają niezbędne wersje.
iOS
W tej sekcji pokazano, jak dodać pakiet 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 Podfile dodaj pody dla pakietu SDK do reklam mobilnych Google w C++, pakietu SDK User Messaging Platform od Google i minimalnego podstawowego pakietu SDK Firebase (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 SDK Firebase C++ SDK:
xcframeworks/firebase.xcframework
xcframeworks/firebase_gma.xcframework
Wszystko gotowe. Twoja aplikacja w C++ jest skonfigurowana tak, aby korzystać z pakietu SDK C++ do reklam mobilnych Google bez żadnych innych usług Firebase.
Skonfiguruj identyfikator aplikacji AdMob
Android
Wykonaj krok 3 sekcji Skonfiguruj aplikację zgodnie z przewodnikiem na temat pakietu SDK do reklam mobilnych na Androida, a potem wróć na tę stronę.
iOS
Wykonaj czynność aktualizowania 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 poproś aplikację o zainicjowanie pakietu SDK do reklam mobilnych Google w języku C++, używając wywołania firebase::gma::Initialize()
, co inicjuje pakiet SDK i wykonuje firebase::Future
po zakończeniu inicjalizacji (lub po upływie 30-sekundowego czasu oczekiwania). Wystarczy to zrobić tylko raz, najlepiej podczas uruchamiania aplikacji.
Reklamy mogą być wstępnie wczytywane przez pakiet SDK C++ do reklam mobilnych Google lub pakiety SDK partnera zapośredniczenia po wywołaniu funkcji Initialize()
. Jeśli musisz uzyskać zgodę użytkowników z Europejskiego Obszaru Gospodarczego (EOG), ustaw wszelkie flagi związane z żądaniem (np. tag_for_child_directed_treatment
lub tag_for_under_age_of_consent
) albo podejmij inne działania przed wczytaniem reklam, wywołaj firebase::gma::SetRequestConfiguration()
przed zainicjowaniem pakietu SDK do reklam mobilnych Google w C++. Więcej informacji znajdziesz w naszym przewodniku Kierowanie.
Oto przykład, jak zadzwonić pod numer 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
do monitorowania stanu zakończenia wywołania metody
Za pomocą Future
można określić stan ukończenia wywołań metod asynchronicznych.
Jeśli na przykład aplikacja wywołuje firebase::gma::Initialize()
, zostaje utworzony i zwrócony nowy element firebase::Future
. Aplikacja może następnie sondować status()
elementu Future
w celu określenia czasu zakończenia inicjowania.
Po zakończeniu aplikacja może wywołać metodę result()
, aby uzyskać wynik AdapterInitializationStatus
.
Metody, które zwracają wartość Future
, mają odpowiednią metodę „ostatni wynik”, której aplikacje mogą używać do pobierania najnowszych wartości 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żyć do sprawdzenia stanu ostatniego wywołania firebase::gma::Initialize()
.
Jeśli stan instancji Future
jest zakończony, a kod błędu to firebase::gma::kAdErrorCodeNone
, oznacza to, że operacja została zakończona pomyślnie.
Możesz też zarejestrować wywołania zwrotne, które mają być wywoływane po zakończeniu Future
. W niektórych przypadkach wywołanie zwrotne będzie uruchamiane w innym wątku, więc upewnij się, że kod jest bezpieczny w wątku. Ten fragment kodu wykorzystuje wskaźnik 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 zacząć zaimplementować reklamę. AdMob oferuje wiele różnych formatów reklam, możesz więc wybrać taki, który najlepiej pasuje do potrzeb 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ą odświeżać się automatycznie po upływie określonego czasu. Jeśli dopiero zaczynasz korzystać z reklam mobilnych, powinien on być dla Ciebie przydatnym punktem wyjścia.
Implementowanie banerów reklamowych
Pełnoekranowa
Reklamy pełnoekranowe zasłaniające interfejs aplikacji do momentu zamknięcia przez użytkownika. Najlepiej sprawdzają się w naturalnych przerwach w procesie wykonywania aplikacji, np. między poziomami gry lub tuż po ukończeniu zadania.
Zastosuj reklamy pełnoekranowe
Otrzymano
Reklamy nagradzające użytkowników za oglądanie krótkich filmów, wchodzenie w interakcje z reklamami demonstracyjnymi gry oraz wypełnianie ankiet. Umożliwia zarabianie na bezpłatnych aplikacjach.