Implementazione di AFS for Mobile Apps (AFSMA) per Android

Prerequisiti

Questa guida all'implementazione presuppone che tu conosca quanto segue:

  • Protocollo di implementazione degli annunci associati alla ricerca personalizzati AFS
  • Sviluppo 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 Android ViewGroup e mostra gli annunci AFSMA. SearchAdView effettua la richiesta di un annuncio con DynamicHeightSearchAdRequest e visualizza gli annunci restituiti. SearchAdView deve essere aggiunto a uno dei gruppi di visualizzazione esistenti dell'app.
  • L'istanza di SearchAdView deve essere creata con il contesto in cui è in esecuzione SearchAdView, in genere un 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 le app mobile.
  • Chiama il metodo setAdUnitId() su questo oggetto con il tuo codice proprietà.

DynamicHeightSearchAdRequest.Builder

  • Questa classe include i parametri della richiesta di annuncio. Analogamente all'impostazione dei parametri negli oggetti di 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 ricerca).

Esempio di implementazione

L'esempio seguente mostra l'utilizzo di Activity per creare un SearchAdView come sottovisualizzazione 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 DynamicHeightSearchAdRequest.Builder che determini i parametri dell'annuncio che verrà visualizzato nel SearchAdView. Gli annunci AFSMA sono configurati allo stesso modo degli annunci personalizzati AFS di ricerca; consulta i Riferimenti degli annunci personalizzati AFS.

// 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 nell'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 della richiesta di annuncio può essere impostata tramite i metodi di configurazione nell'oggetto DynamicHeightSearchAdRequest.Builder. Tutti i parametri che non hanno un metodo del setter in DynamicHeightSearchAdRequest.Builder possono essere impostati utilizzando le coppie chiave-valore con il metodo setAdvancedOptionValue(). Consulta il Riferimento per gli annunci associati alla ricerca personalizzata AFS per un elenco completo delle impostazioni che possono essere impostate con il metodo setAdvancedOptionValue().

Per essere impostato correttamente, il parametro della chiave deve essere preceduto dal prefisso "csa_".

// 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 del setter di un parametro e lo imposti utilizzando setAdvancedOptionValue, la seconda chiamata sostituirà il valore della prima chiamata.

Analizzare gli errori

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 prassi di raccolta, condivisione e sicurezza dei dati di un'app.

Questa pagina è utile per rispettare i requisiti per la divulgazione dei dati in merito all'utilizzo dell'SDK nativo AFS (applicabile anche per l'utilizzo di AdSense per Shopping). In questa pagina puoi trovare informazioni su come e quando i nostri SDK gestiscono i dati degli utenti finali.

Cerchiamo di essere il più trasparenti possibili nell'aiutarti. Tuttavia, in qualità di sviluppatore dell'app, sei l'unico responsabile delle risposte che fornisci nel modulo della sezione Sicurezza dei dati di Google Play per quanto riguarda le modalità di raccolta, condivisione e sicurezza dei dati degli utenti finali dell'app.

Come utilizzare le informazioni in questa pagina

Questa pagina elenca i dati degli utenti finali raccolti solo dall'ultima versione dell'SDK.

Per completare l'informativa sui dati, puoi utilizzare la guida ai tipi di dati di Android per stabilire qual è quello che 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 per la pubblicazione degli annunci e tutti i dati vengono criptati in transito. Le informazioni personali dell'utente non vengono mai raccolte, a meno che non vengano inviate in una query dell'utente dalla tua app.

Dati Questi dati vengono raccolti per i seguenti scopi...
Indirizzo IP Riepilogo:
  • Prevenzione di attività fraudolente, sicurezza e conformità
  • Pubblicità o marketing
  • Ricava posizione approssimativa
Dettaglio:
L'indirizzo IP viene utilizzato nel monitoraggio di attività fraudolente e abusi, nonché 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
Dettaglio:
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 (tocchi) con gli annunci restituiti.
Diagnostica Riepilogo:
  • Analytics
Dettaglio:
L'SDK misura la latenza del rendering per gli annunci al fine di consentire l'implementazione e la misurazione dei miglioramenti del prodotto. Inviamo anche report sugli arresti anomali e sugli errori e a volte aggiungiamo altra strumentazione secondo necessità per capire in che modo la funzionalità viene utilizzata dai publisher.
Identificatori dei dispositivi o altri identificatori Riepilogo:
  • Prevenzione di attività fraudolente, sicurezza e conformità
  • Pubblicità o marketing
Dettaglio:
L'ID dispositivo viene utilizzato per facilitare il monitoraggio di attività fraudolente e comportamenti illeciti, nonché per la misurazione del rendimento degli annunci.