Zacznij


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.

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:

  1. Zaloguj się lub zarejestruj się na konto AdMob.

  2. Zarejestruj aplikację w AdMob. Na tym etapie tworzysz aplikację AdMob z unikalnym identyfikatorem aplikacji AdMob, którego będziesz potrzebować w dalszej części tego przewodnika.

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 potem 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.alibfirebase_gma.a z aplikacją.

  1. W pliku gradle.properties projektu określ lokalizację rozpakowanego pakietu SDK:

    systemProp.firebase_cpp_sdk.dir=FULL_PATH_TO_SDK
    
  2. 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"
    
  3. 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
    }
    
  4. 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}")
    
  5. 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++.

  1. Aby uzyskać CocoaPods w wersji 1 lub nowszej, wykonaj te czynności:

    sudo gem install cocoapods --pre
  2. Dodaj moduł reklam mobilnych Google z rozpakowanego pakietu SDK.

    1. Utwórz plik Podfile, jeśli go nie masz:

      cd APP_DIRECTORY
      pod init
    2. 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'
      
    3. Zainstaluj moduły, a potem otwórz plik .xcworkspace w Xcode.

      pod install
      open APP.xcworkspace
    4. 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 Future mają odpowiadającą im 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 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.

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.

Wdrażanie banerów reklamowych

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.

Wdrażanie reklam z nagrodą