Diese Anleitung richtet sich an Publisher, die eine C++-App mit AdMob monetarisieren möchten, ohne Firebase zu verwenden. Wenn Sie Firebase in Ihre App einbinden möchten oder dies in Erwägung ziehen, lesen Sie stattdessen die AdMob-Version dieses Leitfadens für Firebase.
Um Anzeigen in Ihrer App zu präsentieren und damit Umsätze zu erzielen, müssen Sie als Erstes das Google Mobile Ads C++ SDK in die App einbinden. Nachdem Sie das SDK integriert haben, können Sie ein Anzeigenformat wie Interstitial oder Anzeige mit Prämie auswählen und es implementieren.
Das Google Mobile Ads C++ SDK umschließt das Google Mobile Ads SDK für iOS und Android und ist nur auf diesen Plattformen verfügbar. Das Google Mobile Ads C++ SDK verwendet Firebase C++-Konstrukte zur Unterstützung asynchroner Vorgänge und befindet sich daher im Namespace firebase::gma
.
Wenn Sie diese Anleitung zum ersten Mal durcharbeiten, empfehlen wir Ihnen, die Google Mobile Ads C++-Test-App herunterzuladen und zu verwenden.
Vorbereitung
Android
- Android Studio 3.2 oder höher verwenden
- Achten Sie darauf, dass in der Build-Datei Ihrer App die folgenden Werte verwendet werden:
- Ein
minSdkVersion
von mindestens 16 - Eine
compileSdkVersion
von mindestens 28
- Ein
iOS
- Xcode 13 oder höher verwenden
- iOS 10.0 oder höher als Zielversion festlegen
App in Ihrem AdMob-Konto einrichten
So registrieren Sie Ihre App als AdMob-App:
Melden Sie sich in einem AdMob-Konto an oder registrieren Sie sich für ein AdMob-Konto.
App bei AdMob registrieren In diesem Schritt wird eine AdMob-App mit einer eindeutigen AdMob-App-ID erstellt, die später in diesem Leitfaden benötigt wird.
Google Mobile Ads C++ SDK installieren
Da sich das Google Mobile Ads C++ SDK im Namespace firebase::gma
befindet, laden Sie das Firebase C++ SDK herunter und entpacken Sie es in einem beliebigen Verzeichnis.
Das Firebase C++ SDK ist nicht plattformspezifisch, erfordert aber plattformspezifische Bibliothekskonfigurationen.
Android
Wir empfehlen die Verwendung von CMake. Eine Anleitung für ndk-build finden Sie in unserem allgemeinen Firebase C++ SDK-Startleitfaden, in dem beschrieben wird, wie Sie libfirebase_app.a
und libfirebase_gma.a
mit Ihrer App verknüpfen.
Geben Sie in der Datei
gradle.properties
Ihres Projekts den Speicherort des entzippten SDK an:systemProp.firebase_cpp_sdk.dir=FULL_PATH_TO_SDK
Fügen Sie der Datei
settings.gradle
Ihres Projekts den folgenden Inhalt hinzu: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"
Fügen Sie der Gradle-Datei des Moduls (auf App-Ebene, in der Regel
app/build.gradle
) den folgenden Inhalt hinzu, der die Bibliotheksabhängigkeit für das Google Mobile Ads C++ SDK enthält.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 }
Fügen Sie der Datei
CMakeLists.txt
Ihres Projekts den folgenden Inhalt hinzu.# 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}")
Synchronisieren Sie Ihre App, damit für alle Abhängigkeiten die erforderlichen Versionen vorliegen.
iOS
Die Schritte in diesem Abschnitt zeigen ein Beispiel dafür, wie Sie das Google Mobile Ads C++ SDK in Ihr iOS-Projekt einfügen.
Rufen Sie CocoaPods Version 1 oder höher ab, indem Sie Folgendes ausführen:
sudo gem install cocoapods --pre
Fügen Sie den Google Mobile Ads-Pod aus dem entzippten SDK hinzu.
Erstellen Sie eine Podfile-Datei, falls keine vorhanden ist:
cd APP_DIRECTORY
pod init
Fügen Sie Ihrem Podfile die Pods für das Google Mobile Ads C++ SDK, das Google User Messaging Platform SDK und das minimale Firebase Core SDK (erforderlich für das GMA C++ SDK) hinzu:
pod 'Firebase/CoreOnly' pod 'Google-Mobile-Ads-SDK' pod 'GoogleUserMessagingPlatform'
Installieren Sie die Pods und öffnen Sie dann die Datei
.xcworkspace
in Xcode.pod install
open APP.xcworkspace
Fügen Sie dem Projekt die folgenden Frameworks aus dem Firebase C++ SDK hinzu:
xcframeworks/firebase.xcframework
xcframeworks/firebase_gma.xcframework
Fertig! Ihre C++-App ist für die Verwendung des Google Mobile Ads C++ SDK ohne andere Firebase-Dienste konfiguriert.
AdMob-App-ID Ihrer App konfigurieren
Android
Folgen Sie Schritt 3 unter App konfigurieren, wie im Android-Leitfaden für das Mobile Ads SDK beschrieben, und kehren Sie dann zu dieser Seite zurück.
iOS
Führen Sie den Schritt Info.plist aktualisieren gemäß der Anleitung für das Mobile Ads SDK für iOS aus und kehren Sie dann zu dieser Seite zurück.
Google Mobile Ads SDK initialisieren
Bevor Anzeigen geladen werden, muss Ihre App das Google Mobile Ads C++ SDK initialisieren. Rufen Sie dazu firebase::gma::Initialize()
auf. Dadurch wird das SDK initialisiert und ein firebase::Future
abgeschlossen, sobald die Initialisierung abgeschlossen ist (oder nach einer 30-sekündigen Zeitüberschreitung). Dies muss nur einmal erfolgen, idealerweise beim Starten der App.
Anzeigen können über das Google Mobile Ads C++ SDK oder die SDKs von Vermittlungspartnern vorab geladen werden, wenn Initialize()
aufgerufen wird. Wenn Sie die Einwilligung von Nutzern im Europäischen Wirtschaftsraum (EWR) einholen müssen, legen Sie alle anfragespezifischen Flags (z. B. tag_for_child_directed_treatment
oder tag_for_under_age_of_consent
) fest oder ergreifen Sie andere Maßnahmen, bevor Sie Anzeigen laden. Rufen Sie dazu firebase::gma::SetRequestConfiguration()
auf, bevor Sie das Google Mobile Ads C++ SDK initialisieren. Weitere Informationen finden Sie in unserem Leitfaden zum Targeting.
Hier ein Beispiel für den Aufruf von 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.
}
Verwenden Sie ein Future
, um den Abschlussstatus eines Methodenaufrufs zu überwachen.
Mit einem Future
können Sie den Abschlussstatus Ihrer asynchronen Methodenaufrufe ermitteln.
Wenn Ihre App beispielsweise firebase::gma::Initialize()
aufruft, wird ein neues firebase::Future
erstellt und zurückgegeben. Ihre App kann dann den status()
des Future
abfragen, um festzustellen, wann die Initialisierung abgeschlossen ist.
Anschließend kann Ihre App result()
aufrufen, um die resultierende AdapterInitializationStatus
abzurufen.
Methoden, die ein Future
zurückgeben, haben eine entsprechende Methode für das letzte Ergebnis, mit der Apps das letzte Future
für eine bestimmte Aktion abrufen können. firebase::gma::Initialize()
hat beispielsweise eine entsprechende Methode namens firebase::gma::InitializeLastResult()
, die ein Future
zurückgibt, mit dem Ihre App den Status des letzten Aufrufs von firebase::gma::Initialize()
prüfen kann.
Wenn der Status von Future
„Abgeschlossen“ lautet und der zugehörige Fehlercode firebase::gma::kAdErrorCodeNone
ist, wurde der Vorgang erfolgreich abgeschlossen.
Sie können auch Callbacks registrieren, die aufgerufen werden, wenn ein Future
abgeschlossen ist. In einigen Fällen wird der Callback in einem anderen Thread ausgeführt. Achten Sie daher darauf, dass Ihr Code threadsicher ist. In diesem Code-Snippet wird ein Funktionszeiger für den Callback verwendet:
// 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.
}
}
Anzeigenformat auswählen
Das Google Mobile Ads C++ SDK wurde jetzt importiert und Sie können eine Anzeige implementieren. AdMob bietet eine Reihe verschiedener Anzeigenformate, sodass Sie das auswählen können, das am besten zur Nutzerfreundlichkeit Ihrer App passt.
Banner
Rechteckige Anzeigen, die im oberen oder unteren Bildschirmbereich platziert werden. Banneranzeigen bleiben auf dem Bildschirm, während Nutzer mit der App interagieren, und können nach einer bestimmten Zeit automatisch aktualisiert werden. Wenn Sie noch keine Erfahrung mit mobiler Werbung haben, sind sie ein guter Ausgangspunkt.
Interstitial
Vollbildanzeigen, die die Benutzeroberfläche einer App überlagern, bis sie vom Nutzer geschlossen werden. Sie sollten am besten an natürlichen Pausen im Ablauf einer App verwendet werden, z. B. zwischen den Levels eines Spiels oder direkt nach Abschluss einer Aufgabe.
Interstitial-Anzeigen implementieren
Verfügbar
Anzeigenformat, bei dem Nutzer, die sich kurze Videos ansehen oder mit spielbaren Anzeigen oder Umfragen interagieren, mit Prämien belohnt werden. Wird zur Monetarisierung von Spielen verwendet, die für Nutzer kostenlos sind.