Pierwsze kroki z AdMob w projekcie w C++

Ten krótki przewodnik jest przeznaczony dla wydawców i deweloperów, którzy chcą korzystać z AdMob do zarabiania na aplikacji utworzonej za pomocą Firebase. Jeśli nie planujesz dodawać Firebase do swojej aplikacji, zapoznaj się z samodzielnym przewodnikiem AdMob.

Poznaj wszystkie zalety korzystania z AdMob, Firebase i Google Analytics razem.

Jeśli korzystasz z tego przewodnika po raz pierwszy, zalecamy pobranie i postępowanie zgodnie z instrukcjami w aplikacji testowej pakietu SDK do reklam mobilnych Google w C++.

Zanim zaczniesz

  • Jeśli nie masz jeszcze projektu Firebase ani aplikacji Firebase, postępuj zgodnie z instrukcjami z przewodnika dla początkujących użytkowników Firebase: Dodawanie Firebase do projektu w C++.

  • Sprawdź, czy w projekcie Firebase włączona jest usługa Google Analytics:

    • Jeśli tworzysz nowy projekt Firebase, włącz Google Analytics w trakcie procesu tworzenia projektu.

    • Jeśli masz projekt Firebase bez włączonego Google Analytics, możesz włączyć Google Analytics na karcie Integracje w sekcji > Ustawienia projektu.

Krok 1. Skonfiguruj aplikację na koncie AdMob

  1. Zarejestruj każdą wersję platformy swojej aplikacji jako aplikację w AdMob.

    1. Zaloguj się lub zarejestruj konto AdMob.

    2. Zarejestruj w AdMob każdą wersję Twojej aplikacji. Wykonanie tego kroku utworzy aplikację AdMob z unikalnym identyfikatorem aplikacji AdMob, który będzie Ci potrzebny w dalszej części tego przewodnika.

    Poprosimy Cię o dodanie pakietu SDK do reklam mobilnych do aplikacji. Szczegółowe instrukcje dotyczące tego zadania znajdziesz w dalszej części tego przewodnika.

  2. Połącz każdą aplikację AdMob z odpowiednią aplikacją Firebase.

    Ten krok jest opcjonalny, ale zdecydowanie zalecany. Dowiedz się więcej o zaletach włączania danych o użytkownikach i łączenia aplikacji AdMob z Firebase.

    W przypadku każdego wariantu platformy wykonaj te 2 czynności w panelu Aplikacje na koncie AdMob:

    1. Włącz dane o użytkownikach, aby umożliwić AdMob przetwarzanie i wyświetlanie wybranych danych analitycznych na koncie AdMob. Wymagane jest też połączenie aplikacji AdMob z Firebase.

    2. Połącz aplikację AdMob z istniejącym projektem Firebase i odpowiednią aplikacją Firebase.

      Pamiętaj, by wpisać tę samą nazwę pakietu (Android) lub identyfikator pakietu (iOS) co dla aplikacji Firebase. Nazwę pakietu lub identyfikator pakietu aplikacji Firebase znajdziesz na karcie Twoje aplikacje w sekcji > Ustawienia projektu.

Krok 2: dodaj identyfikator aplikacji AdMob do aplikacji

Android

Dodaj identyfikator aplikacji AdMob do pliku AndroidManifest.xml aplikacji, dodając tag <meta-data> w sposób podany poniżej.

<manifest>
    <application>
        <!-- Sample AdMob App ID: ca-app-pub-3940256099942544~3347511713 -->
        <meta-data
            android:name="com.google.android.gms.ads.APPLICATION_ID"
            android:value="ADMOB_APP_ID"/>
    </application>
</manifest>

iOS

W pliku Info.plist aplikacji dodaj klucz GADApplicationIdentifier z wartością ciągu identyfikatora aplikacji AdMob.

Możesz wprowadzić tę zmianę automatycznie:

<!-- Sample AdMob App ID: ca-app-pub-3940256099942544~1458002511 -->
<key>GADApplicationIdentifier</key>
<string>ADMOB_APP_ID</string>

Możesz też edytować ją w edytorze listy właściwości:

Edytujący listę właściwości

Krok 3. Dodaj pakiet SDK do reklam mobilnych Google

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

  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 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"
  3. Do pliku Gradle modułu (na poziomie aplikacji) (zwykle app/build.gradle) dodaj następującą treść, która zawiera 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
    }
  4. 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}")
  5. Zsynchronizuj aplikację, aby mieć pewność, że wszystkie zależności mają niezbędne wersje.

Wszystko gotowe Twoja aplikacja w języku C++ jest skonfigurowana tak, aby używać pakietu SDK do reklam mobilnych Google w języku C++.

iOS

W tej sekcji pokazano, 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 YOUR_APP_DIRECTORY
      pod init
    2. Do pliku Podfile dodaj blok dla pakietu SDK C++ do reklam mobilnych Google:

      pod 'Google-Mobile-Ads-SDK'
    3. Zainstaluj poda, a następnie otwórz plik .xcworkspace w Xcode.

      pod install
      open YOUR_APP.xcworkspace
    4. Dodaj do projektu te platformy z pakietu SDK Firebase C++ SDK:

      • xcframeworks/firebase.xcframework
      • xcframeworks/firebase_gma.xcframework

Wszystko gotowe Twoja aplikacja w języku C++ jest skonfigurowana tak, aby używać pakietu SDK do reklam mobilnych Google w języku C++.

Krok 4. Zainicjuj pakiet SDK do reklam mobilnych Google

Przed wczytaniem reklam zainicjuj pakiet SDK do reklam mobilnych, wywołując metodę firebase::gma::Initialize().

To wywołanie zwraca żądanie firebase::Future, które kończy się po zakończeniu inicjowania (lub po 30-sekundowym czasie oczekiwania). Wywołaj tę metodę jak najwcześniej, a najlepiej przy wprowadzaniu aplikacji.

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

Krok 5: wybierz format reklamy do zaimplementowania w aplikacji

AdMob oferuje wiele różnych formatów reklam, możesz więc wybrać format, który najlepiej pasuje do wrażeń użytkowników Twojej aplikacji. Kliknij przycisk formatu reklamy, aby wyświetlić szczegółowe instrukcje implementacji w dokumentacji AdMob.

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

Reklamy pełnoekranowe najlepiej działają w naturalnych przerwach w procesie działania aplikacji, np. między poziomami gry lub tuż po ukończeniu zadania.

Zastosuj reklamy pełnoekranowe

Z nagrodą

Reklamy nagradzające użytkowników za oglądanie krótkich filmów, wchodzenie w interakcje z reklamami demonstracyjnymi gry i ankietami

Reklamy z nagrodą mogą pomóc użytkownikom w zarabianiu na bezpłatnych grach.

Wdróż reklamy z nagrodą

Inne interesujące tematy

Wyświetlanie danych o użytkownikach i danych analitycznych

Po zainicjowaniu pakiet SDK do reklam mobilnych zacznie automatycznie rejestrować z Twojej aplikacji zdarzenia analityczne i właściwości użytkownika. Możesz wyświetlać te dane bez dodawania dodatkowego kodu do aplikacji ani implementowania reklam. Oto gdzie możesz zobaczyć te dane analityczne:

Pamiętaj, że aby lepiej odzwierciedlić dane ARPU i ARPPU, możesz przy obliczaniu przychodów uwzględniać dane z niestandardowego zdarzenia Analytics o nazwie ecommerce_purchase (dowiedz się, jak to zrobić).

(Opcjonalnie) Korzystanie z dodatkowych funkcji Google Analytics i Firebase

Skorzystaj z dodatkowych możliwości i funkcji, by zwiększyć przychody z aplikacji i zaangażowanie użytkowników: