Implementierung von AdSense für mobile Apps (AFSMA) für Android

Voraussetzungen

In diesem Implementierungsleitfaden wird davon ausgegangen, dass Sie mit Folgendem vertraut sind:

  • Implementierungsprotokoll für Custom Search Ads (AFS)
  • Entwicklung von Android-Apps
  • Das Google Mobile Ads SDK für Android, das jetzt in den Google Play-Diensten enthalten ist, wird mit einem Android Studio-Projekt verknüpft. Version 9.0.0 der Google Play-Dienste ist erforderlich.

Kurse

Um AFSMA-Anzeigen (auch als dynamische Höhen-Suchanzeigen bezeichnet) in Ihrer App auszuliefern, müssen Sie die folgenden Klassen implementieren:

SearchAdView

  • Diese Klasse übernimmt die Android-Klasse ViewGroup und zeigt die AFSMA-Anzeigen an. SearchAdView stellt die Anfrage für eine Anzeige mit einer DynamicHeightSearchAdRequest und rendert die zurückgegebenen Anzeigen. SearchAdView sollte einer der vorhandenen Datenansichtsgruppen der App hinzugefügt werden.
  • Die SearchAdView muss mit dem Kontext instanziiert werden, in dem die SearchAdView ausgeführt wird, in der Regel ein Activity.
  • Nachdem SearchAdView instanziiert wurde, müssen Sie die setAdSize()-Methode mit AdSize.SEARCH aufrufen, um AFSMA-Anzeigen anzufordern. Bei anderen enum-Werten werden Anzeigen angefordert, die nicht mit AFS für mobile Apps kompatibel sind.
  • Rufen Sie die Methode setAdUnitId() für dieses Objekt mit Ihrem Property-Code auf.

DynamicHeightSearchAdRequest.Builder

  • Diese Klasse schließt die Parameter der Anzeigenanforderung ein. Die Vorgehensweise entspricht dem Festlegen von Parametern in den JavaScript-Anzeigenanfrageobjekten (Seitenoptionen, Einheitenoptionen) für AFS-Desktops und das mobile Web.
  • Legen Sie Parameter mit den entsprechenden Setter fest. Mit anderen Worten: Rufen Sie setQuery() auf, um den Abfrageparameter festzulegen.

Implementierungsbeispiel

Im folgenden Beispiel wird gezeigt, wie Sie mit Activity eine SearchAdView als Teilansicht einer ViewGroup erstellen. Damit AFSMA-Anzeigen richtig angefordert werden, muss das Objekt SearchAdView die Methode setAdSize() mit AdSize.SEARCH aufrufen.

//  MainActivity.java implementation
//  (MainActivity is a subclass of Activity)

// Create the SearchAdView
final SearchAdView searchAdView = new SearchAdView(this);

// Set parameter to request for dynamic height search ads
searchAdView.setAdSize(AdSize.SEARCH); // Important!

// Replace with your pub ID (e.g. ms-app-pub-9616389000213823)
searchAdView.setAdUnitId("ms-app-pub-################");

// Add searchAdView to parent view group
...

Erstellen Sie innerhalb derselben Activity eine DynamicHeightSearchAdRequest.Builder, mit der die Parameter der Anzeige festgelegt werden, die in der SearchAdView gerendert wird. AFSMA-Anzeigen werden genauso konfiguriert wie benutzerdefinierte Suchanzeigen für AFS. Weitere Informationen finden Sie in der Referenz zu benutzerdefinierten AFS-Suchanzeigen.

// Create the ad request
DynamicHeightSearchAdRequest.Builder builder =
        new DynamicHeightSearchAdRequest.Builder();
builder.setQuery("flowers");
builder.setNumber(2);

// Replace with the ID of a style from your custom search styles
builder.setAdvancedOptionValue("csa_styleId", "0000000001");

// Customization options (set using setters on
// DynamicHeightSearchAdRequest.Builder)
builder.setAdTest(true);

Weitere Anpassungsoptionen sind durch Festlegen zusätzlicher Eigenschaften für das Objekt DynamicHeightSearchAdRequest.Builder möglich.

Wenn Sie eine Anzeigenanfrage stellen möchten, rufen Sie die Methode loadAd() mit dem Objekt DynamicHeightSearchAdRequest.Builder aus dem Objekt SearchAdView auf:

searchAdView.loadAd(builder.build());

Erweiterte Optionen

Die meisten Parameter für Anzeigenanfragen können über Setter-Methoden für das DynamicHeightSearchAdRequest.Builder-Objekt festgelegt werden. Alle Parameter, die keine Setter-Methode in DynamicHeightSearchAdRequest.Builder haben, können mithilfe von Schlüssel/Wert-Paaren mit der Methode setAdvancedOptionValue() festgelegt werden. Eine vollständige Liste der Einstellungen, die mit der Methode setAdvancedOptionValue() festgelegt werden können, finden Sie in der Referenz für benutzerdefinierte AFS-Suchanzeigen.

Dem Schlüsselparameter muss das Präfix „csa_“ vorangestellt werden, damit das Attribut korrekt festgelegt wird.

// Advanced customization options (set using key-value pair)

// Set a parameter (parameter_name) and its value (parameter_value)
// builder.setAdvancedOptionValue("csa_parameter_name", "parameter_value");

// Example: Show visible URL below description
// (domainLinkAboveDescription: false)
builder.setAdvancedOptionValue("csa_domainLinkAboveDescription", "false");

Wenn Sie die Setter-Methode eines Parameters verwenden und mit setAdvancedOptionValue festlegen, überschreibt der zweite Aufruf den Wert aus dem ersten Aufruf.

Fehler untersuchen

Das SearchAdView (searchAdView hier) enthält eine setAdListener()-Methode, mit der Sie Fehler untersuchen können. Innerhalb desselben Activity:

searchAdView.setAdListener(new AdListener() {
    @Override
    public void onAdLoaded() {
        // Called when an ad is loaded
        super.onAdLoaded();
        Toast.makeText(MainActivity.this, "Ad Loaded",
                Toast.LENGTH_SHORT).show();
        Log.d(MainActivity.class.getSimpleName(), "Ad Loaded");
    }

    @Override
    public void onAdOpened() {
        // Called when an ad opens an overlay that covers the screen
        super.onAdOpened();
        Toast.makeText(MainActivity.this, "Ad Opened",
                Toast.LENGTH_SHORT).show();
        Log.d(MainActivity.class.getSimpleName(), "Ad Opened");
    }

    @Override
    public void onAdLeftApplication() {
        // Called when an ad leaves the application
        // (to go to the browser for example)
        super.onAdLeftApplication();
        Toast.makeText(MainActivity.this, "Ad Left Application",
                Toast.LENGTH_SHORT).show();
        Log.d(MainActivity.class.getSimpleName(), "Ad Left Application");
    }

    @Override
    public void onAdFailedToLoad(int errorCode) {
        // Called when an ad request failed
        super.onAdFailedToLoad(errorCode);
        Toast.makeText(MainActivity.this, "Ad Failed to Load: " + errorCode,
                Toast.LENGTH_SHORT).show();
        Log.e(MainActivity.class.getSimpleName(), "Ad Failed to Load: " +
                errorCode);
    }
});

Die in der Callback-Methode onAdFailedToLoad() verwendeten Konstanten werden in der API-Referenz beschrieben.

Auf die Offenlegungspflichten für Daten bei Google Play vorbereiten

Im Mai 2021 haben wir den neuen Abschnitt zur Datensicherheit in Google Play angekündigt, in dem Entwickler angeben, wie in ihren Apps Daten erhoben, weitergegeben und geschützt werden.

Auf dieser Seite finden Sie Informationen dazu, wie Sie die Anforderungen für die Offenlegung in Bezug auf Ihre Nutzung des nativen AFS-SDKs (auch für die Nutzung von AdSense für Shopping) erfüllen. Auf dieser Seite finden Sie Informationen dazu, ob und wie unsere SDKs Endnutzerdaten verarbeiten.

Wir möchten so transparent wie möglich sein, um Sie zu unterstützen. Sie als App-Entwickler entscheiden jedoch selbst, wie Sie das Formular für den Abschnitt zur Datensicherheit von Google Play im Hinblick auf die Erhebung, Weitergabe und den Schutz von Endnutzerdaten ausfüllen.

So verwenden Sie die Informationen auf dieser Seite

Auf dieser Seite sind die Endnutzerdaten aufgeführt, die nur von der neuesten Version des SDK erhoben werden.

Im Android-Leitfaden zu Datentypen finden Sie weitere Informationen dazu, welcher Datentyp am ehesten auf die erhobenen Daten zutrifft. Geben Sie außerdem an, wie in Ihrer App die erhobenen Daten weitergegeben und verwendet werden.

Datentyp, auf den das SDK zugreift und ihn erhebt

Pakete:

com.google.android.gms:play-services-afs-native

com.google.ads.afsn

Automatisch erfasste Daten

Das AFS SDK erfasst die folgenden Daten automatisch. Alle Daten werden zum Zweck der Anzeigenauslieferung vom Gerät an Google übertragen und bei der Übertragung verschlüsselt. Die personenbezogenen Daten des Nutzers werden nur erhoben, wenn er von Ihrer App im Rahmen einer Nutzeranfrage gesendet wird.

Daten Diese Daten werden zu folgenden Zwecken erhoben...
IP-Adresse Zusammenfassung:
  • Betrugsprävention, Sicherheit und Compliance
  • Werbung oder Marketing
  • Ungefähren Standort ableiten
Details:
Die IP-Adresse wird zur Überwachung von Betrug und Missbrauch verwendet und zur Ermittlung des ungefähren Nutzerstandorts verwendet.

Der ungefähre Standort wird dann verwendet, um sicherzustellen, dass die ausgelieferten Anzeigen den örtlichen Vorschriften entsprechen können und um Anzeigen bereitzustellen, die für den ungefähren geografischen Standort eines Nutzers relevant sind.

App-Aktivitäten
  • Seitenaufrufe und Tippaktivitäten in der App
  • In-App-Suchverlauf
Zusammenfassung:
  • Analytics
  • Betrugsprävention, Sicherheit und Compliance
  • Werbung oder Marketing
  • Personalisierung
Details:
Ihre App sendet uns die Suchanfrage des Nutzers, damit wir Suchanzeigen ausliefern können, die für das Keyword relevant sind. Wir messen die Anzahl der Aufrufe und Interaktionen (Antippen) mit den zurückgegebenen Anzeigen.
Diagnose Zusammenfassung:
  • Analytics
Details:
Das SDK misst die Rendering-Latenz für Anzeigen, um Produktverbesserungen zu implementieren und zu messen. Außerdem senden wir Absturz- und Fehlerberichte und fügen bei Bedarf gelegentlich andere Instrumente hinzu, um zu verstehen, wie die Funktionen von Publishern verwendet werden.
Geräte-ID oder andere Kennungen Zusammenfassung:
  • Betrugsprävention, Sicherheit und Compliance
  • Werbung oder Marketing
Details:
Die Geräte-ID wird verwendet, um Betrug und Missbrauch zu beobachten und die Anzeigenleistung zu messen.