Güvenli sinyal adaptörü oluşturma

Güvenli sinyaller, istemci cihazın topladığı ve belirli teklif verenlerle paylaştığı kodlanmış verilerdir. Bu sayfada, Interactive Media Ads (IMA) SDK'sını kullanarak güvenli sinyaller toplama ve Google Ad Manager'a gönderme konusunda size yol gösterilmektedir.

Başlamadan önce

Devam etmeden önce Android için IMA SDK'sının 3.29.0 veya daha yeni bir sürümüne sahip olduğunuzdan emin olun.

Güvenli sinyal bağdaştırıcısı arayüzünü oluşturma

Güvenli sinyal toplamak ve sağlamak için arayüz:

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() {
  }
}

Adaptörü başlatma

IMA SDK, başlatma yöntemini çağırarak her bağdaştırıcıyı bir kez başlatır arasında yer alır. Şifreleme bağımlılıkları başlatmak, önbellekleri ayarlamak veya tüm sinyal toplama çağrılarında aynı kalan sinyalleri önceden hesaplamak için bu yöntemi uygulayın.

Aşağıdaki örnekte bağdaştırıcının ilk başlatılması gösterilmektedir:

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

Sinyal toplama

IMA SDK'sı, bir reklam isteği başlatılmadan önce sinyal toplama yöntemini asenkron olarak çağırır. Bu sinyal toplayıcı yöntemleri, şifrelenmiş sinyalleri iletmek veya bir hatayı bildirmek için bir geri çağırma işlevi içerir.

Aşağıdaki örneklerde, geri çağırma yoluyla güvenli sinyaller toplanmaktadır işlev:

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

Hataları bildirme

Adaptör sınıfınızı kullanan kullanıcılarla iletişim kurmak için sinyal toplama sırasındaki tüm hataları bildirin ve sinyal toplayıcı geri çağırma işlevine iletin. Bu işlem, adaptörünüzün uygulamalarla entegrasyonu sırasında ortaya çıkan sorunları giderir.

Görünebilecek hatalar şunlardır:

  • Uygulamada SDK'nız veya bir bağımlılık bulunamadı.
  • SDK'nız veya bir bağımlılığınız çalışmak için gerekli izne veya kullanıcı iznine sahip değil.

Adaptör sürümünü belirtin

İş akışınızda bağdaştırıcının sürümünü belirttiğinizden emin olun. IMA SDK her reklam isteğine bağdaştırıcı sürümünüzü ekler ve bunları, sinyallerine geçiş yapacaktır.

Teklif isteğinde, bağdaştırıcı sürümüne bağlı olarak bağdaştırıcının güvenli sinyallerden yararlanırız.

Aşağıdaki örnekte adaptör sürümü belirtilmektedir:

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

SDK çalışma zamanı sürümünü döndürme

Bağdaştırıcınızı, SDK'nızın birden çok sürümüyle çalışacak şekilde tasarlayabilirsiniz. Adaptörün birden fazla sürümle çalışabilmesi için SDK'nın çalışma zamanı sürümünü döndürdüğünüzden emin olun. IMA SDK'sı her reklam isteğinde, uyumlu sürümle birlikte çalışma zamanı sürümünü içerir.

Aşağıdaki örnekler, SDK çalışma zamanı sürümünü ister ve döndürür:

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

Adaptörü Google'a kaydedin

Google'ın, adaptörü sinyal toplama için yetkilendirmesi amacıyla Android paket adını Google'a kaydettirmeniz gerekir. IMA SDK'sı yalnızca Google'a kaydettiğiniz bağdaştırıcıları başlatır.

Adaptörü doğrulama

Bağdaştırıcıyı doğrulamak için aşağıdaki bölümleri tamamlayın:

Test uygulamasını yapılandırma

Bağdaştırıcıyı doğrulamadan önce test uygulamasını yapılandırın. şu adımları uygulayın:

  1. IMA SDK bağımlılıklarını modülünü kullanabilirsiniz. Örneğin: app/build.gradle:

    dependencies {
      implementation 'com.google.ads.interactivemedia.v3:interactivemedia:3.29.0'
    }
    
  2. Bağdaştırıcınız ve SDK'nız gibi derleme bağımlılıkları ekleyin.

Sinyalleri doğrulama

Adaptörünüzün sinyal gönderdiğini doğrulamak için uygulamanızın reklam isteği trafiğini izlemek üzere bir ağ proxy'si kullanın. Başarılı olursa her bir reklam isteği.

Örneklerin tamamını inceleyin

Bu bölümde, bir referans noktası olarak kabul edilir.

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