Ten przewodnik jest przeznaczony dla wydawców, którzy chcą zarabiać na aplikacji w C++ za pomocą AdMob bez używania Firebase. Jeśli planujesz uwzględnić Firebase w swojej aplikacji lub rozważasz taką możliwość, zapoznaj się z wersją tego przewodnika dotyczącą AdMob z Firebase.
Zintegrowanie pakietu SDK do reklam mobilnych Google w C++ z aplikacją to pierwszy krok do wyświetlania reklam i zarabiania. 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++ otacza 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.
Wymagania wstępne
Android
- Używaj Androida Studio w wersji 3.2 lub nowszej.
- Sprawdź, czy w pliku kompilacji Twojej aplikacji znajdują się te wartości:
minSdkVersionw wersji 16 lub nowszej,compileSdkVersionw wersji 28 lub nowszej.
iOS
- Używaj Xcode w wersji 13 lub nowszej.
- Ustaw iOS w wersji 10.0 lub nowszej.
Konfigurowanie aplikacji na koncie AdMob
Aby zarejestrować aplikację jako aplikację w AdMob, wykonaj te czynności:
Zaloguj się na konto AdMob lub utwórz je.
Zarejestruj aplikację w AdMob. Ten krok spowoduje utworzenie aplikacji w 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 Firebase C++ SDK, a następnie rozpakuj go do wybranego katalogu.
Pakiet Firebase C++ SDK nie jest specyficzny dla platformy, ale wymaga konfiguracji biblioteki specyficznej dla platformy.
Android
Zalecamy używanie CMake, ale instrukcje dotyczące ndk-build znajdziesz w naszym ogólnym przewodniku dla początkujących dotyczącym pakietu Firebase C++ SDK do połączenia libfirebase_app.a i libfirebase_gma.a z aplikacją.
W pliku
gradle.propertiesprojektu określ lokalizację rozpakowanego pakietu SDK:systemProp.firebase_cpp_sdk.dir=FULL_PATH_TO_SDKDo pliku
settings.gradleprojektu 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 tę treść, która 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 }Do pliku
CMakeLists.txtprojektu dodaj tę 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 wszystkie zależności na pewno miały odpowiednie wersje.
iOS
Czynności opisane w tej sekcji pokazują, jak dodać pakiet SDK do reklam mobilnych Google w C++ do projektu na iOS.
Pobierz CocoaPods w wersji 1 lub nowszej, uruchamiając:
sudo gem install cocoapods --preDodaj pod Google Mobile Ads z rozpakowanego pakietu SDK.
Utwórz plik Podfile, jeśli go nie masz:
cd APP_DIRECTORYpod initDo pliku Podfile dodaj pody pakietu SDK do reklam mobilnych Google w C++, pakietu SDK platformy do personalizowania wiadomości wyświetlanych użytkownikom oraz minimalnego pakietu SDK Firebase Core (wymaganego przez pakiet SDK do reklam mobilnych Google w C++):
pod 'Firebase/CoreOnly' pod 'Google-Mobile-Ads-SDK' pod 'GoogleUserMessagingPlatform'Zainstaluj pody, a następnie otwórz plik
.xcworkspacew Xcode.pod installopen APP.xcworkspaceDodaj do projektu te frameworki z pakietu Firebase C++ SDK:
xcframeworks/firebase.xcframeworkxcframeworks/firebase_gma.xcframework
Wszystko gotowe. Twoja aplikacja w C++ jest skonfigurowana do używania pakietu SDK do reklam mobilnych Google w C++ bez żadnych innych usług Firebase.
Konfigurowanie identyfikatora aplikacji w AdMob
Android
Wykonaj krok 3 w sekcji Konfigurowanie aplikacji zgodnie z instrukcjami w przewodniku po pakiecie SDK do reklam mobilnych na Androida , a następnie wróć na tę stronę.
iOS
Wykonaj krok Aktualizowanie pliku Info.plist zgodnie z instrukcjami w przewodniku po pakiecie SDK do reklam mobilnych na iOS, a następnie 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++, wywołując funkcję firebase::gma::Initialize(). Spowoduje to zainicjowanie pakietu SDK i zakończenie firebase::Future po jego zakończeniu (lub 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 mediacji po wywołaniu funkcji Initialize(). Jeśli musisz uzyskać zgodę użytkowników w Europejskim Obszarze Gospodarczym (EOG), ustawić flagi związane z żądaniem (takie jak tag_for_child_directed_treatment lub tag_for_under_age_of_consent) albo wykonać 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 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żywanie Future do monitorowania stanu zakończenia wywołania metody
Future umożliwia określenie stanu zakończenia asynchronicznych wywołań metod.
Gdy na przykład aplikacja wywołuje funkcję firebase::gma::Initialize(), tworzony jest nowy firebase::Future i zwracany. Aplikacja może następnie sondować status() funkcji Future, aby określić, kiedy inicjowanie zostało zakończone.
Po zakończeniu aplikacja może wywołać funkcję result(), aby uzyskać wynikowy AdapterInitializationStatus.
Metody, które zwracają Future, mają odpowiednią metodę „ostatniego wyniku”, której aplikacje mogą używać do pobierania najnowszego Future dla danej czynności. Na przykład funkcja firebase::gma::Initialize() ma odpowiednią metodę o nazwie firebase::gma::InitializeLastResult(), która zwraca Future, którego aplikacja może używać do sprawdzania stanu ostatniego wywołania funkcji firebase::gma::Initialize().
Jeśli stan 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 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++ jest już zaimportowany i możesz zaimplementować reklamę. AdMob oferuje wiele różnych formatów reklam, dzięki czemu możesz wybrać ten, który najlepiej pasuje do wrażeń użytkownika 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 korzystać z reklam mobilnych, to dobry sposób na początek.
Implementowanie banerów reklamowych
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 wykonaniu zadania.
Implementowanie reklam pełnoekranowych
Z nagrodą
Reklamy, które nagradzają użytkowników za oglądanie krótkich filmów i interakcje z reklamami demonstracyjnymi gier oraz ankietami. Używane do zarabiania na bezpłatnych aplikacjach.