Commencer

La première étape consiste à ajouter le SDK PAL pour Android à votre application.

Ajouter le SDK PAL pour Android en tant que bibliothèque

Depuis la version 18.0.0, le SDK PAL est hébergé sur le dépôt Maven de Google et peuvent être ajoutés à votre application comme suit:

app/build.gradle

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

Vous pouvez également télécharger le SDK PAL à partir du dépôt Maven de Google et l'ajouter manuellement à votre application.

Générer un nonce

Un "nonce" est une chaîne chiffrée unique générée par la PAL à l'aide de NonceLoader. Le SDK PAL exige que chaque nouvelle demande de flux soit accompagnée d'un nouvel le nonce généré. Toutefois, les nonces peuvent être réutilisés pour plusieurs demandes d'annonces dans le même flux. Pour générer un nonce à l'aide du SDK PAL, modifiez MyActivity.java Pour voir une application exemple qui utilise la PAL pour générer un nonce, téléchargez l'exemple Android depuis GitHub

Vous devez d'abord importer le SDK PAL, créer des propriétés privées NonceLoader et NonceManager, puis initialisez le NonceLoader.

Nous vous recommandons de ne créer qu'une seule instance de la classe NonceLoader pour chaque session utilisateur dans votre application, sauf si celle-ci comporte plusieurs pages ou des éléments équivalents de construction. Le corrélateur de page (&correlator) reste ainsi inchangé pour la durée de vie d'une page ou de la session d'un utilisateur dans l'application. Vous gardez le contrôle le corrélateur de flux (&scor), qui doit être réinitialisé une fois pour chaque nouveau flux.

Toutes les demandes d'annonces d'un même flux doivent partager les mêmes NonceLoader et valeur de corrélateur de flux pour la limitation de la fréquence d'exposition et l'exclusion réciproque pour qu'elles fonctionnent correctement.

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);
    ...
  }

Ensuite, créez une fonction pour déclencher la génération de nonce. Vous n'avez besoin que d'un seul nonce pour toutes les demandes d'annonces pour la lecture d'un même flux. À des fins de test, vous pouvez appeler cette fonction lorsque vous cliquez sur un bouton dans votre application de test. Les paramètres NonceRequest définis ici sont des exemples de paramètres. Vous devez définir votre en fonction des caractéristiques de votre application.

Cette fonction déclenche la génération de nonce de manière asynchrone. Vous devez donc implémenter un AsyncTask pour gérer la réussite ou l'échec de la requête de 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());
  }
}

Une fois qu'un gestionnaire de nonce est créé, le nonce peut être récupéré à tout moment à l'aide de nonceManager.getNonce()

Associer un nonce à la demande d'annonce

Pour utiliser le nonce généré, ajoutez un paramètre givn à votre tag d'emplacement publicitaire et le paramètre nonce avant d'envoyer vos demandes d'annonces.

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

Suivre les événements de lecture

Enfin, vous devez implémenter différents gestionnaires d'événements pour votre lecteur. Pour à des fins de test, vous pouvez les associer aux événements de clic sur un bouton, l'implémentation, ceux-ci sont déclenchés par les événements appropriés liés au joueur:

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

Voici à quel moment appeler chaque fonction de votre implémentation:

  • sendPlaybackStart(): début de la lecture de la vidéo
  • sendPlaybackEnd(): lorsque votre session de lecture vidéo se termine
  • sendAdClick(): chaque fois que l'utilisateur clique sur une annonce.
  • sendTouch() : à chaque interaction tactile avec le lecteur

(Facultatif) Envoyer des signaux Google Ad Manager via des ad servers tiers

Lorsque vous configurez votre ad server tiers pour qu'il fonctionne avec Google Ad Manager, consultez à la documentation de votre serveur pour capturer et transférer la valeur nonce dans chaque annonce requête. L'exemple fourni montre une URL de demande d'annonce avec le paramètre nonce. inclus. Le paramètre nonce se propage à partir du SDK PAL, via votre serveurs intermédiaires, puis vers Ad Manager, pour améliorer la monétisation.

Configurez votre ad server tiers pour inclure le nonce dans le champ à Ad Manager. Voici un exemple de tag d'emplacement publicitaire configuré à l'intérieur de l'ad server tiers:

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

Pour en savoir plus, consultez l'article Implémentation côté serveur de Google Ad Manager guide de démarrage.

Ad Manager recherche givn= pour identifier la valeur nonce. L'annonce tierce le serveur doit prendre en charge une macro qui lui est propre, telle que %%custom_key_for_google_nonce%% et remplacez-le par le paramètre de requête nonce. que vous avez fournies à l'étape précédente. En savoir plus sur la marche à suivre doit être disponible dans la documentation de l'ad server tiers.