Rozpocznij

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.

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:

  1. Zaloguj się lub zarejestruj konto AdMob.

  2. 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.

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

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

  1. Pobierz CocoaPods w wersji 1 lub nowszej, uruchamiając polecenie:

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

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

      cd APP_DIRECTORY
      pod init
      
    2. 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'
      
    3. Zainstaluj pody, a następnie otwórz plik .xcworkspace w Xcode.

      pod install
      open APP.xcworkspace
      
    4. 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żyć 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.

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.

Wdrożenie banerów reklamowych

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.

Wdrażanie reklam z nagrodą