Comenzar

El primer paso es agregar el SDK de PAL de Android a tu app.

Agrega el SDK de PAL de Android como una biblioteca

A partir de la versión 18.0.0, el SDK de PAL está alojado en el repositorio Maven de Google. se puede agregar a tu app de la siguiente manera:

app/build.gradle

...
dependencies {
    implementation 'com.google.android.gms:play-services-pal:20.2.0'
    ...
}

Como alternativa, puedes descargar el SDK de PAL del repositorio de Maven de Google y agregarlo a tu app de forma manual.

Generar nonce

Un "nonce" es una sola cadena encriptada que genera PAL con NonceLoader. El SDK de PAL requiere que cada solicitud de transmisión nueva vaya acompañada de un nonce generado. Sin embargo, los nonces se pueden volver a usar para varias solicitudes de anuncios en la misma transmisión. Para generar un nonce con el SDK de PAL, modifica el siguiente código: MyActivity.java Para ver una app de ejemplo que usa PAL para generar un nonce, haz lo siguiente: descarga el ejemplo de Android en GitHub:

Primero debes importar el SDK de PAL y crear algunas propiedades privadas para almacenar. NonceLoader y NonceManager. Luego, inicializa tu NonceLoader.

Te recomendamos que crees una sola instancia de la clase NonceLoader para cada sesión de usuario en la aplicación, a menos que esta tenga varias páginas o equivalentes construcciones. Esto mantiene el correlator de la página (&correlator) sin cambios para la el ciclo de vida de una página o la sesión de un usuario en la aplicación. Aún tienes control sobre el correlator de transmisión (&scor), que se debe restablecer una vez por cada transmisión nueva.

Todas las solicitudes de anuncios de la misma transmisión deben compartir el mismo NonceLoader y Valor de correlator de transmisión para la limitación de frecuencia y la exclusión competitiva para que las funciones funcionen correctamente.

import android.app.Activity;
import android.os.Bundle;
import com.google.ads.interactivemedia.pal.NonceLoader;
import com.google.ads.interactivemedia.pal.NonceManager;
import com.google.ads.interactivemedia.pal.NonceRequest;
import com.google.ads.interactivemedia.pal.ConsentSettings;
import com.google.android.gms.tasks.OnFailureListener;
import com.google.android.gms.tasks.OnSuccessListener;

import java.util.HashSet;
import java.util.Set;

public class MainActivity extends Activity {
...
  private NonceLoader nonceLoader;
  private NonceManager nonceManager = null;
  private ConsentSettings consentSettings;

  @Override
  protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    // The default value for allowStorage() is false, but can be
    // changed once the appropriate consent has been gathered. The
    // getConsentToStorage() method is a placeholder for the publisher's own
    // method of obtaining user consent, either by integrating with a CMP or
    // based on other methods the publisher chooses to handle storage consent.

    boolean isConsentToStorage = getConsentToStorage();

    videoView = findViewById(R.id.video_view);
    videoView.setOnTouchListener(this::onVideoViewTouch);

    consentSettings = ConsentSettings.builder()
            .allowStorage(isConsentToStorage)
            .build();

    // It is important to instantiate the NonceLoader as early as possible to
    // allow it to initialize and preload data for a faster experience when
    // loading the NonceManager. A new NonceLoader will need to be instantiated
    //if the ConsentSettings change for the user.
    nonceLoader = new NonceLoader(this, consentSettings);
    ...
  }

A continuación, crea una función para activar la generación del nonce. Solo necesitas un nonce para todas las solicitudes de anuncios en una sola reproducción de transmisión. Para realizar pruebas, puedes llamar a esta función cuando haces clic en un botón de la app de prueba. El Los parámetros NonceRequest que se establecen aquí son parámetros de ejemplo. Debes configurar tus parámetros según las características de tu app.

Esta función activa la generación del nonce de forma asíncrona, por lo que debes Implementa un AsyncTask para controlar el éxito o el fracaso de la solicitud del nonce:

public void generateNonceForAdRequest() {
  Set supportedApiFrameWorksSet = new HashSet();
  // The values 2, 7, and 9 correspond to player support for VPAID 2.0,
  // OMID 1.0, and SIMID 1.1.
  supportedApiFrameWorksSet.add(2);
  supportedApiFrameWorksSet.add(7);
  supportedApiFrameWorksSet.add(9);

  NonceRequest nonceRequest = NonceRequest.builder()
      .descriptionURL("https://example.com/content1")
      .iconsSupported(true)
      .omidPartnerVersion("6.2.1")
      .omidPartnerName("Example Publisher")
      .playerType("ExamplePlayerType")
      .playerVersion("1.0.0")
      .ppid("testPpid")
      .sessionId("Sample SID")
      .supportedApiFrameworks(supportedApiFrameWorksSet)
      .videoPlayerHeight(480)
      .videoPlayerWidth(640)
      .willAdAutoPlay(true)
      .willAdPlayMuted(false)
      .build();
  NonceCallbackImpl callback = new NonceCallbackImpl();
  nonceLoader
      .loadNonceManager(nonceRequest)
      .addOnSuccessListener(callback)
      .addOnFailureListener(callback);
}

private class NonceCallbackImpl implements OnSuccessListener<NonceManager>, OnFailureListener {
  @Override
  public void onSuccess(NonceManager manager) {
    nonceManager = manager;
    String nonceString = manager.getNonce();
    Log.i("PALSample", "Generated nonce: " + nonceString);
    // from here you would trigger your ad request and move on to initialize content
  }

  @Override
  public void onFailure(Exception error) {
    Log.e("PALSample", "Nonce generation failed: " + error.getMessage());
  }
}

Una vez que se crea un administrador de nonce, este se puede recuperar en cualquier momento con nonceManager.getNonce()

Adjunta un nonce a la solicitud de anuncio

Para usar el nonce generado, agrega un parámetro givn a tu etiqueta de anuncio y el nonce antes de realizar las solicitudes de anuncios.

/**
 * The ad tag for your ad request, for example:
 * https://pubads.g.doubleclick.net/gampad/ads?sz=640x480&iu=/124319096/external\
 * /single_ad_samples&ciu_szs=300x250&impl=s&gdfp_req=1&env=vp&output=vast&unviewed_position_start=1\
 * &cust_params=deployment%3Ddevsite%26sample_ct%3Dlinear&correlator=
 *
 * For more sample ad tags, see
 * developers.google.com/interactive-media-ads/docs/sdks/html5/client-side/tags
 */
private static final String DEFAULT_AD_TAG = "Your ad tag";
...
@Override
public void onSuccess(NonceManager manager) {
  nonceManager = manager;
  String nonceString = manager.getNonce();
  Log.i("PALSample", "Generated nonce: " + nonceString);
  // Append the nonce to the ad tag URL.
  makeAdRequest(DEFAULT_AD_TAG + "&givn=" + nonceString);
}

Cómo realizar un seguimiento de los eventos de reproducción

Por último, debes implementar varios controladores de eventos para tu reproductor. Para con fines de prueba, puedes adjuntarlos a eventos de clic en botones, pero estas se activarán con los eventos del jugador correspondientes:

public void sendAdClick() {
  if (nonceManager != null) {
    nonceManager.sendAdClick();
  }
}

public void sendPlaybackStart() {
  if (nonceManager != null) {
    nonceManager.sendPlaybackStart();
  }
}

public void sendPlaybackEnd() {
  if (nonceManager != null) {
    nonceManager.sendPlaybackEnd();
  }
}

public void onVideoViewTouch(MotionEvent e) {
  if (nonceManager != null) {
    nonceManager.sendTouch(e);
  }
}

A continuación, se indica cuándo debes llamar a cada función en tu implementación:

  • sendPlaybackStart(): Cuando comienza la sesión de reproducción de video
  • sendPlaybackEnd(): Cuando termina la sesión de reproducción de video
  • sendAdClick(): Cada vez que el usuario hace clic en un anuncio
  • sendTouch(): En cada interacción táctil con el reproductor

(Opcional) Envía indicadores de Google Ad Manager a través de servidores de anuncios de terceros

Cuando configures tu servidor de anuncios de terceros para que funcione con Google Ad Manager, a la documentación de tu servidor para capturar y reenviar el valor del nonce en cada anuncio. para cada solicitud. El ejemplo proporcionado es de una URL de solicitud de anuncio con el parámetro nonce incluidos. El parámetro nonce se propaga desde el SDK de PAL a través de tu a los servidores intermediarios y a Ad Manager para mejorar la monetización.

Configura tu servidor de anuncios de terceros para incluir el nonce en el a Ad Manager. A continuación, le mostramos un ejemplo de una etiqueta de anuncio configurada en el servidor de anuncios de terceros:

'https://pubads.serverside.net/gampad/ads?givn=%%custom_key_for_google_nonce%%&...'

Para obtener más información, consulta la guía de implementación del lado del servidor de Google Ad Manager.

Ad Manager busca givn= para identificar el valor del nonce. El anuncio de terceros necesita admitir alguna macro propia, como %%custom_key_for_google_nonce%% y reemplázalo por el parámetro de consulta nonce que proporcionaste en el paso anterior. Más información para lograr esto debe estar disponible en la documentación del servidor de anuncios de terceros.