Implementazione di AFSMA per le app mobile (AFSMA) per Android

Prerequisiti

Questa guida all'implementazione presuppone la conoscenza di quanto segue:

  • protocollo di implementazione degli annunci associati alla ricerca personalizzata AFS (CSA)
  • Sviluppo di app Android
  • Associare l'SDK Google Mobile Ads per Android (ora parte di Google Play Services) a un progetto Android Studio. È necessaria la versione 9.0.0 di Google Play Services.

Corsi

Per pubblicare annunci AFSMA (noti anche come annunci dinamici della rete di ricerca) nella tua app, implementa le seguenti classi:

SearchAdView

  • Questa classe eredita dalla classe ViewGroup di Android e mostra gli annunci AFSMA. SearchAdView invia la richiesta di un annuncio con DynamicHeightSearchAdRequest e visualizza gli annunci restituiti. L'elemento SearchAdView deve essere aggiunto a qualsiasi gruppo di visualizzazioni esistente dell'app.
  • È necessario creare un'istanza di SearchAdView con il contesto in cui è in esecuzione SearchAdView, in genere una Activity.
  • Dopo aver creato l'istanza di SearchAdView, devi chiamare il metodo setAdSize() con AdSize.SEARCH per richiedere gli annunci AFSMA. Altri valori enum richiederanno annunci non compatibili con AFS per app mobile.
  • Chiama il metodo setAdUnitId() su questo oggetto con il tuo codice proprietà.

DynamicHeightSearchAdRequest.Builder

  • Questa classe incapsula i parametri della richiesta di annuncio. Questa operazione è analoga all'impostazione dei parametri negli oggetti richiesta di annuncio JavaScript (opzioni di pagina, opzioni di unità) per AFS per desktop e web mobile.
  • Imposta i parametri con i setter appropriati (in altre parole, chiama setQuery() per impostare il parametro di query).

Esempio di implementazione

L'esempio seguente mostra l'utilizzo di un Activity per creare una SearchAdView come una visualizzazione secondaria di ViewGroup. Per richiedere correttamente gli annunci AFSMA, l'oggetto SearchAdView deve chiamare il metodo setAdSize() con AdSize.SEARCH.

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

All'interno dello stesso Activity, crea un elemento DynamicHeightSearchAdRequest.Builder che determina i parametri dell'annuncio che verrà visualizzato nel SearchAdView. Gli annunci AFSMA sono configurati come gli annunci personalizzati AFSMA; consulta il Riferimento sugli annunci AFSMA per informazioni dettagliate.

// 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);

Sono possibili altre opzioni di personalizzazione impostando proprietà aggiuntive sull'oggetto DynamicHeightSearchAdRequest.Builder.

Per effettuare una richiesta di annuncio, chiama il metodo loadAd() con l'oggetto DynamicHeightSearchAdRequest.Builder dall'oggetto SearchAdView:

searchAdView.loadAd(builder.build());

Opzioni avanzate

La maggior parte dei parametri delle richieste di annuncio può essere impostata tramite metodi setter sull'oggetto DynamicHeightSearchAdRequest.Builder. Tutti i parametri che non hanno un metodo setter in DynamicHeightSearchAdRequest.Builder possono essere impostati utilizzando coppie chiave-valore con il metodo setAdvancedOptionValue(). Consulta il riferimento sugli annunci associati alla ricerca personalizzata AFS per un elenco completo delle impostazioni che possono essere configurate con il metodo setAdvancedOptionValue().

Il parametro chiave deve essere preceduto dal prefisso "csa_" affinché la proprietà venga impostata correttamente.

// 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");

Se utilizzi il metodo setter di un parametro e lo imposti utilizzando setAdvancedOptionValue, la seconda chiamata sostituirà il valore della prima chiamata.

Analisi degli errori

Il SearchAdView (searchAdView qui) contiene un metodo setAdListener() per aiutarti a esaminare gli errori. All'interno dello stesso 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);
    }
});

Le costanti utilizzate nel metodo di callback onAdFailedToLoad() sono descritte nel riferimento API.

Prepararsi per i requisiti relativi alle informative sui dati di Google Play

A maggio 2021, abbiamo annunciato la nuova sezione Sicurezza dei dati di Google Play, ovvero un'informativa fornita dagli sviluppatori relativa alle pratiche di raccolta, condivisione e sicurezza dei dati di un'app.

Questa pagina può aiutarti a soddisfare i requisiti per questa informativa sui dati per quanto riguarda l'utilizzo dell'SDK nativo di AFS (applicabile anche all'utilizzo di AdSense per Shopping). In questa pagina puoi trovare informazioni che determinano se e come i nostri SDK gestiscono i dati degli utenti finali.

Cerchiamo di essere il più trasparenti possibile nel fornirti assistenza. Tuttavia, in qualità di sviluppatore dell'app, sei l'unico responsabile delle decisioni su come rispondere al modulo della sezione Sicurezza dei dati di Google Play in merito alle misure di raccolta, condivisione e sicurezza dei dati degli utenti finali dell'app.

Come utilizzare le informazioni in questa pagina

In questa pagina sono elencati i dati degli utenti finali raccolti solo dalla versione più recente dell'SDK.

Per completare l'informativa sui dati, puoi utilizzare la guida ai tipi di dati di Android per stabilire quale tipo di dati descrive meglio i dati raccolti. Nell'informativa sui dati, assicurati anche di tenere conto del modo in cui la tua app specifica condivide e utilizza i dati raccolti.

L'SDK dei tipi di dati accede e raccoglie

Pacchi:

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

com.google.ads.afsn

Dati raccolti automaticamente

L'SDK AFS raccoglie automaticamente i seguenti dati. Tutti i dati vengono trasmessi dal dispositivo a Google allo scopo di pubblicare annunci e tutti i dati vengono criptati in transito. Le informazioni personali dell'utente non vengono mai raccolte, a meno che la tua app non le invii tramite una query dell'utente.

Dati Questi dati vengono raccolti per le seguenti finalità...
Indirizzo IP Riepilogo:
  • Prevenzione di attività fraudolente, sicurezza e conformità
  • Pubblicità o marketing
  • Ricava posizione approssimativa
Dettagli:
L'indirizzo IP viene utilizzato per il monitoraggio di attività fraudolente e abusi, oltre che per ricavare la posizione approssimativa dell'utente.

La posizione approssimativa viene quindi utilizzata per garantire che gli annunci pubblicati siano conformi alle normative locali e per fornire annunci pertinenti alla posizione geografica approssimativa di un utente.

Attività dell'app
  • Visualizzazioni di pagina e tocchi nell'app
  • Cronologia delle ricerche in-app
Riepilogo:
  • Analytics
  • Prevenzione di attività fraudolente, sicurezza e conformità
  • Pubblicità o marketing
  • Personalizzazione
Dettagli:
La tua app ci fornisce la query dell'utente per consentirci di restituire annunci della rete di ricerca pertinenti alla parola chiave. Misuriamo le visualizzazioni e il coinvolgimento (i tocchi) con gli annunci che vengono restituiti.
Diagnostica Riepilogo:
  • Analytics
Dettagli:
L'SDK misura la latenza del rendering per gli annunci al fine di implementare e misurare i miglioramenti del prodotto. Inviamo inoltre report su arresti anomali/errori e occasionalmente aggiungiamo altra strumentazione per capire come le funzionalità vengono utilizzate dai publisher.
Identificatori del dispositivo o altri identificatori Riepilogo:
  • Prevenzione di attività fraudolente, sicurezza e conformità
  • Pubblicità o marketing
Dettagli:
L'ID dispositivo viene utilizzato per agevolare il monitoraggio di attività fraudolente e abusi, nonché la misurazione del rendimento degli annunci.