Rozpocznij

Ten przewodnik jest przeznaczony dla wydawców, którzy chcą zarabiać na aplikacji w C++ dzięki AdMob, bez Firebase. Jeśli planujesz dodać Firebase do swojej aplikacji lub rozważasz tę funkcję, zajrzyj do wersji AdMob z Firebase w tym przewodniku.

Integracja 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. pełnoekranową lub z nagrodą, i wykonać odpowiednie czynności, aby go wdrożyć.

Pakiet SDK do reklam mobilnych Google w C++ pakuje pakiety SDK do reklam mobilnych Google na iOS i Androida. Jest dostępny tylko na tych platformach. Pakiet SDK w języku C++ do reklam mobilnych Google korzysta z konstrukcji C++ Firebase do obsługi operacji asynchronicznych, dlatego znajduje się w przestrzeni nazw firebase::gma.

Jeśli czytasz ten przewodnik po raz pierwszy, zalecamy pobranie aplikacji testowej C++ do reklam mobilnych Google i wykonanie zawartych w niej instrukcji.

Wymagania wstępne

Android

  • Korzystanie z Androida Studio 3.2 lub nowszej wersji
  • Upewnij się, że plik kompilacji aplikacji zawiera te wartości:
    • wartość minSdkVersion wynosząca 16 lub więcej.
    • wartość compileSdkVersion wynosząca 28 lub więcej.

iOS

  • Używaj Xcode 13 lub nowszej wersji
  • Kieruj na iOS w wersji 10.0 lub nowszej

Konfigurowanie aplikacji na koncie AdMob

Zarejestruj swoją aplikację jako aplikację AdMob, wykonując te czynności:

  1. Zaloguj się lub zarejestruj konto AdMob.

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

Zainstaluj pakiet SDK do reklam mobilnych Google w języku C++

Ponieważ pakiet SDK do reklam mobilnych Google w C++ znajduje się w przestrzeni nazw firebase::gma, pobierz pakiet SDK Firebase C++, a potem rozpakuj go do wybranego katalogu.

Pakiet SDK Firebase C++ nie jest związany z konkretną platformą, ale wymaga jej konfiguracji.

Android

Zalecamy korzystanie z CMake, ale instrukcje kompilacji ndk znajdziesz w naszym ogólnym przewodniku dla początkujących na temat pakietu SDK Firebase C++, który pomoże Ci połączyć platformy libfirebase_app.a i libfirebase_gma.a ze swoją aplikacją.

  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ższe treści, w tym 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 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 upewnić się, że wszystkie zależności mają niezbędne wersje.

iOS

W tej sekcji pokazujemy, jak dodać pakiet 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. W pliku Pod dodaj bloki SDK do reklam mobilnych Google w języku C++, pakiet SDK platformy do personalizowania wiadomości wyświetlanych użytkownikom i minimalny podstawowy pakiet SDK Firebase (wymagane przez pakiet GMA C++ SDK):

      pod 'Firebase/CoreOnly'
      pod 'Google-Mobile-Ads-SDK'
      pod 'GoogleUserMessagingPlatform'
      
    3. Zainstaluj pody, a potem 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 do reklam mobilnych Google w języku C++ bez żadnych innych usług Firebase.

Skonfiguruj identyfikator aplikacji AdMob dla swojej aplikacji

Android

Wykonaj krok 3 z 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 Aktualizowanie pliku Info.plist zgodnie z opisem w przewodniku po pakiecie SDK do reklam mobilnych na iOS, a potem wróć na tę stronę.

Zainicjuj pakiet SDK do reklam mobilnych Google

Przed wczytaniem reklam aplikacja musi zainicjować pakiet SDK do reklam mobilnych Google w języku C++, wywołując metodę firebase::gma::Initialize(), która inicjuje pakiet SDK i kończy firebase::Future po zakończeniu inicjowania (lub po 30 sekundach oczekiwania). Wystarczy to zrobić tylko raz, najlepiej przy uruchomieniu aplikacji.

Reklamy mogą być wstępnie wczytywane przez pakiet SDK do reklam mobilnych Google w wersji 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 (EOG), ustaw flagi dotyczące konkretnych żądań (np. tag_for_child_directed_treatment czy tag_for_under_age_of_consent) lub wykonaj inne działania przed wczytaniem reklam, pamiętaj, by wywołać firebase::gma::SetRequestConfiguration() przed zainicjowaniem pakietu SDK do reklam mobilnych Google w języku C++. 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żyj Future do monitorowania stanu ukończenia wywołania metody

Future umożliwia sprawdzanie stanu ukończenia wywołań metod asynchronicznych.

Na przykład gdy aplikacja wywołuje metodę firebase::gma::Initialize(), tworzy się i zwraca nowy firebase::Future. Aplikacja może następnie sondować status() z Future, aby określić, kiedy inicjowanie zostało zakończone. Po zakończeniu aplikacja może wywołać result(), aby uzyskać wynik AdapterInitializationStatus.

Metody zwracające wartość Future mają odpowiadającą im 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 odpowiadającą jej metodę 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 połączenia Future jest zakończony, a jego kod błędu to firebase::gma::kAdErrorCodeNone, operacja zakończyła się pomyślnie.

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 wykonywane w innym wątku, więc upewnij się, że kod jest bezpieczny dla wątku. Ten fragment kodu używa 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 C++ do reklam mobilnych Google został zaimportowany i możesz już wdrożyć reklamę. AdMob oferuje wiele różnych formatów reklam, z których 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 wchodzą w interakcję z aplikacją, i mogą być automatycznie odświeżane po upływie określonego czasu. Jeśli reklamy mobilne to dla Ciebie nowość, będzie to dobry punkt wyjścia.

Wdrożenie banerów reklamowych

Pełnoekranowa

Reklamy pełnoekranowe zakrywające interfejs aplikacji do czasu zamknięcia przez użytkownika. Najlepiej sprawdza się podczas naturalnych przerw 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 gier oraz wypełnianie ankiet. Służy do zarabiania na bezpłatnych aplikacjach.

Wdrażanie reklam z nagrodą