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

Prerequisiti

Questa guida all'implementazione presuppone che tu abbia familiarità con quanto segue:

Corsi

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

SearchAdView

  • Questa classe eredita dalla classe ViewGroup di Android e mostra gli annunci AFSMA. SearchAdView effettua la richiesta di un annuncio con un DynamicHeightSearchAdRequest e mostra gli annunci restituiti. L'elemento SearchAdView deve essere aggiunto a qualsiasi gruppo di visualizzazioni esistenti dell'app.
  • Deve essere creata un'istanza di SearchAdView 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 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 procedura è analoga all'impostazione dei parametri negli oggetti di richiesta di annuncio JavaScript (opzioni pagina, opzioni unità) per AFS per desktop e web mobile.
  • Impostare 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 Activity per creare un SearchAdView come visualizzazione secondaria di ViewGroup. Per richiedere correttamente gli annunci AFSMA, il 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 indica i parametri dell'annuncio che verrà visualizzato nell'elemento SearchAdView. Gli annunci AFSMA sono configurati nello stesso modo degli annunci personalizzati AFS della rete di ricerca. consulta la sezione sugli annunci della rete di ricerca personalizzati AFS Riferimento per maggiori dettagli.

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

Altre opzioni di personalizzazione sono possibili impostando proprietà aggiuntive nella DynamicHeightSearchAdRequest.Builder .

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

searchAdView.loadAd(builder.build());

Opzioni avanzate

La maggior parte dei parametri di richiesta di annuncio può essere impostata tramite i metodi del setter sull'oggetto DynamicHeightSearchAdRequest.Builder. Tutti i parametri che non dispongono di un metodo setter in DynamicHeightSearchAdRequest.Builder può essere impostato utilizzando coppie chiave-valore con setAdvancedOptionValue() . Consulta gli annunci personalizzati associati alla ricerca AFS Riferimento per un elenco completo delle impostazioni che possono essere configurate setAdvancedOptionValue().

Il parametro chiave deve essere preceduto dal prefisso "csa_" per impostare correttamente la proprietà.

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

Analisi degli 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);
    }
});

Costanti utilizzate nel metodo di callback onAdFailedToLoad() sono descritti in API riferimento.

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

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

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

Il nostro obiettivo è essere il più trasparente possibile per supportarti. Tuttavia, in qualità di sviluppatore di app, è tua esclusiva responsabilità decidere 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 della tua app.

Come utilizzare le informazioni in questa pagina

Questa pagina elenca i dati degli utenti finali raccolti solo dalla versione più recente dell'SDK.

Per completare l'informativa sui dati, puoi utilizzare la guida di Android ai tipi di dati 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

Pacchetti:

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 a Google dall'esterno del dispositivo allo scopo di pubblicare annunci e 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 le seguenti finalità...
Indirizzo IP Riepilogo: .
    .
  • Prevenzione di attività fraudolente, sicurezza e conformità
  • Pubblicità o marketing
  • Ricava posizione approssimativa
di Gemini Advanced. Dettagli:
L'indirizzo IP viene utilizzato per il monitoraggio di attività fraudolente e abusi, nonché per ricavarne la posizione approssimativa dell'utente.

La posizione approssimativa viene quindi utilizzata per garantire che gli annunci pubblicati siano conformi alle normative locali e per pubblicare annunci pertinenti alla posizione geografica approssimativa dell'utente.

Attività nelle 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
di Gemini Advanced. Dettagli:
L'app fornisce la query dell'utente per consentirci di restituire gli annunci della rete di ricerca pertinenti alla parola chiave. Misuriamo le visualizzazioni e il coinvolgimento (tocchi) con gli annunci restituiti.
Diagnostica Riepilogo: .
    .
  • Analytics
di Gemini Advanced. Dettagli:
L'SDK misura la latenza del rendering degli annunci per consentire l'implementazione e la misurazione dei miglioramenti del prodotto. Inviamo anche report su arresti anomali/errori e occasionalmente aggiungiamo altra strumentazione, se necessario, 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
di Gemini Advanced. Dettagli:
L'ID dispositivo viene utilizzato per facilitare il monitoraggio di attività fraudolente e abusi, nonché per la misurazione del rendimento degli annunci.