Implementación de AFS para apps de dispositivos móviles (AFSMA) en Android

Requisitos previos

En esta guía de implementación, se supone que estás familiarizado con los siguientes temas:

Clases

Para publicar anuncios AFSMA (también conocidos como anuncios dinámicos de búsqueda en 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. SearchAdView realiza la solicitud de un anuncio con un DynamicHeightSearchAdRequest y renderiza los anuncios que se muestran. Se debe agregar el 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, que, por lo general, es un Activity.
  • Una vez que se crea una instancia de SearchAdView, debes llamar al método setAdSize() con AdSize.SEARCH para solicitar anuncios AFSMA. Otros valores enum solicitarán anuncios no compatibles con AFS para aplicaciones para dispositivos móviles.
  • Llama al método setAdUnitId() en este objeto con el código de tu propiedad.

DynamicHeightSearchAdRequest.Builder

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

Ejemplo de implementación

En el siguiente ejemplo, se muestra el uso de un Activity para crear un SearchAdView como una subvista de un ViewGroup. Para solicitar anuncios AFSMA de forma correcta, 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 dicte los parámetros del anuncio que se renderizará en la SearchAdView. Los anuncios de AFSMA se configuran de la misma manera que los anuncios de búsqueda personalizados de AFS. Consulta la Referencia de 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);

Otras opciones de personalización son posibles configurando propiedades adicionales 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 anuncio se pueden establecer mediante métodos set en el objeto DynamicHeightSearchAdRequest.Builder. Cualquier parámetro que no tenga un método set en DynamicHeightSearchAdRequest.Builder se puede configurar usando 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 los parámetros de configuración que se pueden establecer con el método setAdvancedOptionValue().

El parámetro 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 los errores

El SearchAdView (searchAdView aquí) contiene un método setAdListener() para ayudarte a investigar los errores. Dentro del mismo 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 aplicaciones.

Esta página puede ayudarte a completar los requisitos de esta divulgación de datos con respecto al uso del SDK nativo de AFS (también aplicable para el uso de AdSense para Shopping). En esta página, puedes encontrar información sobre si nuestros SDK manejan los datos del usuario final y la manera en que 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 seguridad, uso compartido y recopilación de 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.

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

Tipos de datos que recopila el SDK y a los 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 se encriptan en tránsito. La información personal del usuario nunca se recopila, a menos que la aplicación la envíe como consulta.

Datos Estos datos se recopilan con los siguientes fines:
Dirección IP Resumen:
  • Seguridad, cumplimiento y prevención de fraudes
  • Publicidad o marketing
  • Cómo obtener la ubicación aproximada
Detalles:
La dirección IP se usa para supervisar casos de fraude y abuso, y también para obtener la ubicación aproximada del usuario.

Luego, se utiliza la ubicación aproximada para garantizar que los anuncios publicados se ajusten a las reglamentaciones locales y para proporcionar anuncios relevantes para 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
  • Seguridad, cumplimiento y prevención de fraudes
  • Publicidad o marketing
  • Personalización
Detalle:
Tu app nos proporciona la búsqueda del usuario a fin de mostrar anuncios de búsqueda relevantes para la palabra clave. Medimos las vistas y la participación (toques) con los anuncios que se muestran.
Diagnóstico Resumen:
  • Analytics
Detalles:
El SDK mide la latencia de renderización de los anuncios a fin de permitir que se implementen y midan las mejoras de los productos. También enviamos informes de fallas y errores y, en ocasiones, agregamos otros instrumentos según sea necesario para comprender cómo los publicadores usan esta funcionalidad.
Dispositivo y otros identificadores Resumen:
  • Seguridad, cumplimiento y prevención de fraudes
  • Publicidad o marketing
Detalles:
El ID de dispositivo se usa para ayudar con la supervisión de fraudes y abusos, así como para medir el rendimiento de los anuncios.