Créer un adaptateur de signaux sécurisés

Les signaux sécurisés sont des données encodées qu'un appareil client collecte et partage avec certains enchérisseurs. Cette page vous explique comment collecter et envoyer des signaux sécurisés à Google Ad Manager à l'aide du SDK Interactive Media Ads (IMA).

Avant de commencer

Avant de continuer, assurez-vous de disposer du SDK IMA pour Android 3.29.0 ou version ultérieure.

Créer l'interface de l'adaptateur de signal sécurisé

Pour collecter et fournir des signaux sécurisés, créez des classes qui implémentent l'attribut interface:

package companydomain.path.to.securesignals;
import android.content.Context;
import androidx.annotation.Keep;
import com.google.ads.interactivemedia.v3.api.signals.SecureSignalsAdapter;

/**
 * An example implementation of Secure Signals adapter.
 */
@Keep
public final class MySecureSignalsAdapter implements SecureSignalsAdapter {
  /**
   * Default constructor with no arguments for IMA SDK to instantiate this class.
   */
  public MySecureSignalsAdapter() {
  }
}

Initialiser l'adaptateur

Le SDK IMA initialise chaque adaptateur une fois en appelant la méthode d'initialisation de l'adaptateur. Implémentez cette méthode pour lancer les dépendances de chiffrement, définissez des caches ou en précalculant les signaux qui restent identiques les appels de collection.

L'exemple suivant initialise l'adaptateur:

  ...
  /**
   * Initialize your SDK and any dependencies.
   * IMA SDK calls this function exactly once before signal collection.
   *
   * @param context  The activity context that creates an ads loader.
   * @param callback A callback function to pass initialization results to IMA SDK.
   */
  @Override
  public void initialize(Context context, SecureSignalsInitializeCallback callback) {
    // Initialize your SDK and any dependencies.
    ...

    // Notify IMA SDK of initialization success.
    callback.onSuccess();

    // If signal collection fails, call callback.onFailure();
    // callback.onFailure(new Exception("Signal collection failed."));
  }
  ...

Collecte des signaux

Avant le début d'une demande d'annonce, le SDK IMA appelle de manière asynchrone une méthode de collecte des signaux. Ces méthodes de collecteur de signaux contiennent une fonction de rappel de transmettre les signaux chiffrés ou signaler une erreur.

Les exemples suivants collectent les signaux sécurisés via la fonction de rappel :

  ...
  /**
   * Invokes your SDK to collect, encrypt and pass the signal collection results to IMA SDK.
   * IMA SDK calls this function before each ad request.
   *
   * @param context  The activity context that creates an ads loader.
   * @param callback A callback function to pass signal collection results to IMA SDK.
   */
  @Override
  public void collectSignals(Context context, SecureSignalsCollectSignalsCallback callback) {

    try {
      // Collect and encrypt the signals.
      String signals = ...;

      // Pass the encrypted signals to IMA SDK.
      callback.onSuccess(signals);
    } catch (Exception e) {
      // Pass signal collection failures to IMA SDK.
      callback.onFailure(e);
    }
  }
  ...

Signaler les erreurs

Pour communiquer avec les utilisateurs de votre classe d'adaptateur, signalez toutes les erreurs pendant la collecte des signaux et les transmettre au rappel du collecteur de signaux. Ce processus permet de résoudre les problèmes qui surviennent lors de l'intégration de votre adaptateur aux applications.

Les erreurs susceptibles de s'afficher sont les suivantes:

  • Votre SDK ou une dépendance ne sont pas trouvés dans l'application.
  • Votre SDK ou une dépendance ne dispose pas de l'autorisation ou de l'utilisateur requis le consentement au travail.

Spécifier la version de l'adaptateur

Dans votre workflow, veillez à spécifier la version de l'adaptateur. Le SDK IMA inclut la version de votre adaptateur dans chaque demande d'annonce et les transmet avec les signaux sécurisés dans une demande d'enchère.

Dans la requête d'enchère, en fonction de la version de l'adaptateur, vous pouvez identifier les détails de chiffrement, d'encodage et de mise en forme que l'adaptateur utilise pour créer les signaux sécurisés.

L'exemple suivant spécifie la version de l'adaptateur:

  ...
  /**
   * Specifies this adapter's version.
   */
  private static final VersionInfo AdapterVersion = new VersionInfo(1, 0, 1);
  ...
  /**
   * @return The version of this adapter.
   *         IMA SDK calls this function before each ad request.
   */
  @Override
  public VersionInfo getVersion() {
    return AdapterVersion;
  }
  ...

Renvoyer la version du SDK Runtime

Vous pouvez concevoir votre adaptateur pour qu'il fonctionne avec plusieurs versions de votre SDK. Pour que l'adaptateur fonctionne avec plusieurs versions, assurez-vous de renvoyer la version d'exécution du SDK. Dans chaque demande d'annonce, le SDK IMA inclut la version d'exécution avec la version de l'adaptateur.

Les exemples suivants demandent et renvoient la version d'exécution du SDK:

  ...
  /**
   * @return The version of your SDK that this adapter is depending on.
   *         IMA SDK calls this function before each ad request.
   */
  @Override
  public VersionInfo getSDKVersion() {
    // Request the version from your SDK and convert to an IMAVersion.
    int[] mySDKVersion = ...;

    return new VersionInfo(mySDKVersion[0], mySDKVersion[1], mySDKVersion[2]);
  }
  ...

Enregistrer l'adaptateur auprès de Google

Pour que Google autorise l'adaptateur pour la collecte du signal, vous devez enregistrer le nom du package Android ou avec Google. Le SDK IMA initialise uniquement les adaptateurs que vous enregistrez auprès de Google.

Valider l'adaptateur

Pour valider l'adaptateur, complétez les sections suivantes:

Configurer l'application de test

Avant de valider l'adaptateur, configurez l'application de test. Procédez comme suit :

  1. Ajoutez les dépendances du SDK IMA au fichier Gradle au niveau de l'application de votre module, par exemple app/build.gradle :

    dependencies {
      implementation 'com.google.ads.interactivemedia.v3:interactivemedia:3.29.0'
    }
    
  2. Ajoutez des dépendances de compilation telles que votre adaptateur et votre SDK.

Vérifier les signaux

Pour vérifier que votre adaptateur envoie des signaux, utilisez un proxy réseau pour surveiller l'annonce le trafic des requêtes de votre application. Si l'opération réussit, les signaux demande d'annonce.

Consulter les exemples complets

Cette section reprend l'exemple terminé de toutes les étapes disponibles pour votre référence.

package companydomain.path.to.securesignals;
import android.content.Context;
import androidx.annotation.Keep;
import com.google.ads.interactivemedia.v3.api.VersionInfo;
import com.google.ads.interactivemedia.v3.api.signals.SecureSignalsAdapter;
import com.google.ads.interactivemedia.v3.api.signals.SecureSignalsCollectSignalsCallback;
import com.google.ads.interactivemedia.v3.api.signals.SecureSignalsInitializeCallback;

/**
 * An example implementation of Secure Signals adapter.
 */
@Keep
public final class MySecureSignalsAdapter implements SecureSignalsAdapter {
  /**
   * Specifies this adapter's version.
   */
  private static final VersionInfo AdapterVersion = new VersionInfo(1, 0, 1);
  /**
   * Default constructor with no arguments for IMA SDK to instantiate this class.
   */
  public MySecureSignalsAdapter() {
  }
  /**
   * Initialize your SDK and any dependencies.
   * IMA SDK calls this function exactly once before signal collection.
   *
   * @param context  The activity context that creates an ads loader.
   * @param callback A callback function to pass initialization results to IMA SDK.
   */
  @Override
  public void initialize(Context context, SecureSignalsInitializeCallback callback) {
    try {
      // Initialize your SDK and any dependencies.
      ...

      // Notify IMA SDK of initialization success.
      callback.onSuccess();
    } catch (Exception e) {
      // Pass initialization failures to IMA SDK.
      callback.onFailure(e);
    }
  }
  /**
   * Invokes your SDK to collect, encrypt and send the signal collection results to IMA SDK.
   * IMA SDK calls this function before each ad request.
   *
   * @param context  The activity context that creates an ads loader.
   * @param callback A callback function to pass signal collection results to IMA SDK.
   */
  @Override
  public void collectSignals(Context context, SecureSignalsCollectSignalsCallback callback) {
    try {
      // Collect and encrypt the signals.
      String signals = ...;

      // Pass the encrypted signals to IMA SDK.
      callback.onSuccess(signals);
    } catch (Exception e) {
      // Pass signal collection failures to IMA SDK.
      callback.onFailure(e);
    }
  }
  /**
   * @return The version of this adapter.
   * IMA SDK calls this function before each ad request.
   */
  @Override
  public VersionInfo getVersion() {
    return AdapterVersion;
  }
  /**
   * @return The version of your SDK that this adapter is depending on.
   * IMA SDK calls this function before each ad request.
   */
  @Override
  public VersionInfo getSDKVersion() {
    // Request the version from your SDK and convert to an IMAVersion.
    int[] mySDKVersion = ...;
    return new VersionInfo(mySDKVersion[0], mySDKVersion[1], mySDKVersion[2]);
  }
}