Implementación de AFS para aplicaciones para celulares (AFSMA) para Android

Requisitos previos

En esta guía de implementación, se da por sentado que estás familiarizado con lo siguiente:

  • Protocolo de implementación de anuncios de búsqueda personalizados (CSA) de AFS
  • Desarrollo de apps para Android
  • Asociar el SDK de Google Mobile Ads para Android (que ahora forma parte de los Servicios de Google Play) a un proyecto de Android Studio Se requiere la versión 9.0.0 de los Servicios de Google Play.

Clases

Para publicar anuncios de AFSMA (también conocidos como anuncios dinámicos de búsqueda de altura) en tu app, implementa las siguientes clases:

SearchAdView

  • Esta clase se hereda de la clase ViewGroup de Android y muestra los anuncios de AFSMA. El SearchAdView realiza la solicitud de un anuncio con un DynamicHeightSearchAdRequest y renderiza los anuncios que se muestran. Se debe agregar la SearchAdView a cualquiera de los grupos de vistas existentes de la app.
  • Se debe crear una instancia de SearchAdView con el contexto en el que se ejecuta SearchAdView, por lo general, un Activity.
  • Una vez que se crea la instancia de SearchAdView, debes llamar al método setAdSize() con AdSize.SEARCH para solicitar anuncios de AFSMA. Otros valores de enumeración solicitarán anuncios que no sean compatibles con AFS para aplicaciones para dispositivos móviles.
  • Llama al método setAdUnitId() en este objeto con tu código de propiedad.

DynamicHeightSearchAdRequest.Builder

  • Esta clase encapsula los parámetros de solicitud de anuncio. Esto es similar a la configuración de parámetros en los objetos de solicitud de anuncio de JavaScript (opciones de página, opciones de unidades) para AFS de escritorio y la Web móvil.
  • Establece parámetros con los establecedores adecuados (en otras palabras, llama a setQuery() para configurar el parámetro de consulta).

Ejemplo de implementación

En el siguiente ejemplo, se muestra cómo usar un Activity para crear un SearchAdView como subvista de un ViewGroup. Para solicitar de manera correcta los anuncios de AFSMA, el objeto SearchAdView debe llamar al método 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
...

Dentro de la misma Activity, crea un DynamicHeightSearchAdRequest.Builder que indique los parámetros del anuncio que se renderizará en SearchAdView. Los anuncios de AFSMA de búsqueda personalizados se configuran de la misma manera que los anuncios de búsqueda personalizada de AFS; consulta la Referencia de los anuncios de búsqueda personalizados de AFS para obtener más detalles.

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

Se pueden configurar otras propiedades de personalización en el objeto DynamicHeightSearchAdRequest.Builder.

Para realizar una solicitud de anuncio, llama al método loadAd() con el objeto DynamicHeightSearchAdRequest.Builder desde el objeto SearchAdView:

searchAdView.loadAd(builder.build());

Opciones avanzadas

La mayoría de los parámetros de solicitud de anuncios se pueden establecer mediante métodos set en el objeto DynamicHeightSearchAdRequest.Builder. Cualquier parámetro que no tenga un método establecedor en DynamicHeightSearchAdRequest.Builder se puede establecer mediante pares clave-valor con el método setAdvancedOptionValue(). Consulta la referencia de los anuncios de búsqueda personalizados de AFS para obtener una lista completa de las opciones de configuración que se pueden establecer con el método setAdvancedOptionValue().

El parámetro de clave debe tener el prefijo “csa_” para que la propiedad se configure correctamente.

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

Si usas el método set de un parámetro y lo configuras con setAdvancedOptionValue, la segunda llamada anulará el valor de la primera llamada.

Investiga errores

SearchAdView (aquí searchAdView) contiene un método setAdListener() para ayudarte a investigar errores. Dentro de la misma 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);
    }
});

Las constantes que se usan en el método de devolución de llamada onAdFailedToLoad() se describen en la referencia de la API.

Prepárate para los requisitos de divulgación de datos de Google Play

En mayo de 2021, Google Play anunció la nueva sección de Seguridad de los datos, una divulgación proporcionada por los desarrolladores sobre las prácticas de seguridad, uso compartido y recopilación de datos de las apps.

Esta página puede ayudarlo a completar los requisitos de esta divulgación de datos en relación con su uso del SDK nativo de AFS (también se aplica a AdSense para Shopping). En esta página, puede encontrar información sobre si nuestros SDK manejan datos del usuario final y cómo lo hacen.

Nuestro objetivo es ayudarte de la manera más transparente posible. Sin embargo, como desarrollador de la app, eres el único responsable de decidir cómo responder el formulario de la sección de Seguridad de los datos de Google Play en relación con las prácticas de recopilación, uso compartido y seguridad de los datos del usuario final de tu app.

Cómo usar la información de esta página

En esta página, se enumeran los datos del usuario final que recopila solo la versión más reciente del SDK.

A fin de completar tu divulgación de datos, puedes usar la guía sobre tipos de datos de Android para determinar qué tipo de datos recopila. En esa divulgación, también asegúrese de explicar la forma en que su aplicación específica comparte y usa los datos recopilados.

Tipo de datos que recopila y al que accede el SDK

Paquetes:

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

com.google.ads.afsn

Datos recopilados automáticamente

El SDK de AFS recopila los siguientes datos automáticamente. Todos los datos se transmiten fuera del dispositivo a Google con el fin de publicar anuncios y todos los datos se encriptan en tránsito. La información personal del usuario nunca se recopila, a menos que tu app la envíe.

Datos Estos datos se recopilan con los siguientes fines...
Dirección IP Resumen:
  • Prevención de fraudes, seguridad y cumplimiento
  • Publicidad o marketing
  • Derivar ubicación aproximada
Detalles:
La dirección IP se usa en la supervisión de fraudes y abusos, además de utilizarse para derivar la ubicación aproximada del usuario.

Luego, se utiliza la ubicación aproximada para garantizar que los anuncios publicados se ajusten a las normativas locales y para proporcionar anuncios relevantes según la ubicación geográfica aproximada de un usuario.

Actividad en apps
  • Páginas vistas y presiones en la app
  • Historial de búsqueda en la app
Resumen:
  • Analytics
  • Prevención de fraudes, seguridad y cumplimiento
  • Publicidad o marketing
  • Personalización
Detalle:
Su aplicación nos proporciona la búsqueda del usuario para que podamos mostrar anuncios de búsqueda que sean relevantes para la palabra clave. Medimos las vistas y la participación (toques) con los anuncios que se muestran.
Diagnóstico Resumen:
  • Analytics
Detalle:
El SDK mide la latencia de renderización de los anuncios a fin de permitir que se implementen y midan las mejoras del producto. También enviamos informes de fallas y errores y, en ocasiones, agregamos otra instrumentación según sea necesario para comprender cómo usan la funcionalidad los publicadores.
Dispositivo y otros identificadores Resumen:
  • Prevención de fraudes, seguridad y cumplimiento
  • Publicidad o marketing
Detalle:
El ID de dispositivo se usa para ayudar con la supervisión de fraude y abuso, así como para la medición del rendimiento de los anuncios.