सुरक्षित सिग्नल अडैप्टर बनाना

प्लैटफ़ॉर्म चुनें: Android iOS

सुरक्षित सिग्नल, कोड में बदला गया ऐसा डेटा होता है जिसे क्लाइंट डिवाइस इकट्ठा करता है और चुनिंदा बिडर के साथ शेयर करता है. इस पेज पर, इंटरैक्टिव मीडिया विज्ञापन (IMA) SDK टूल का इस्तेमाल करके, Google Ad Manager को सुरक्षित सिग्नल इकट्ठा करने और भेजने का तरीका बताया गया है.

शुरू करने से पहले

आगे बढ़ने से पहले, पुष्टि करें कि आपके पास Android के लिए IMA SDK टूल का वर्शन 3.29.0 या उससे नया वर्शन हो.

सुरक्षित सिग्नल अडैप्टर इंटरफ़ेस बनाना

सुरक्षित सिग्नल इकट्ठा करने और उन्हें उपलब्ध कराने के लिए, ऐसे क्लास बनाएं जो इंटरफ़ेस को लागू करते हों:

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

अडैप्टर को शुरू करना

IMA SDK टूल, हर अडैप्टर को एक बार शुरू करता है. इसके लिए, वह अडैप्टर के शुरू करने के तरीके को कॉल करता है. किसी भी एन्क्रिप्ट करने की डिपेंडेंसी को शुरू करने, कैश सेट अप करने या ऐसे सिग्नल की पहले से गणना करने के लिए, इस तरीके को लागू करें जो सिग्नल इकट्ठा करने के सभी कॉल में एक जैसे रहते हैं.

यहां दिए गए उदाहरण में, अडैप्टर को शुरू करने का तरीका बताया गया है:

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

सिग्नल इकट्ठा करना

विज्ञापन दिखाने का अनुरोध शुरू होने से पहले, IMA SDK टूल, एसिंक्रोनस तरीके से सिग्नल इकट्ठा करने के तरीके को कॉल करता है. सिग्नल इकट्ठा करने के इन तरीकों में, एन्क्रिप्ट किए गए सिग्नल पास करने या गड़बड़ी की रिपोर्ट करने के लिए, कॉलबैक फ़ंक्शन शामिल होता है.

यहां दिए गए उदाहरणों में, कॉलबैक फ़ंक्शन के ज़रिए सुरक्षित सिग्नल इकट्ठा करने का तरीका बताया गया है:

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

गड़बड़ियों की रिपोर्ट करना

आपके अडैप्टर क्लास का इस्तेमाल करने वाले उपयोगकर्ताओं से संपर्क करने के लिए, सिग्नल इकट्ठा करने के दौरान होने वाली सभी गड़बड़ियों की रिपोर्ट करें और उन्हें सिग्नल इकट्ठा करने वाले कॉलबैक में पास करें. इस प्रोसेस से, आपके अडैप्टर को ऐप्लिकेशन में इंटिग्रेट करने के दौरान होने वाली समस्याओं को ठीक किया जा सकता है.

यहां गड़बड़ियों के कुछ उदाहरण दिए गए हैं:

  • आपके ऐप्लिकेशन में, आपका SDK टूल या कोई डिपेंडेंसी नहीं मिली.
  • आपके SDK टूल या किसी डिपेंडेंसी के पास काम करने के लिए ज़रूरी अनुमति या उपयोगकर्ता की सहमति नहीं है.

अडैप्टर का वर्शन तय करना

अपने वर्कफ़्लो में, पुष्टि करें कि आपने अडैप्टर का वर्शन तय किया हो. IMA SDK टूल, हर विज्ञापन दिखाने के अनुरोध में आपके अडैप्टर का वर्शन शामिल करता है. साथ ही, बिड रिक्वेस्ट में सुरक्षित सिग्नल के साथ उन्हें पास करता है.

बिड अनुरोध में, अडैप्टर के वर्शन के आधार पर, एन्क्रिप्ट करने, कोड में बदलने, और फ़ॉर्मैट करने की जानकारी की पहचान की जा सकती है. अडैप्टर, सुरक्षित सिग्नल बनाने के लिए इस जानकारी का इस्तेमाल करता है.

यहां दिए गए उदाहरण में, अडैप्टर का वर्शन तय करने का तरीका बताया गया है:

  ...
  /**
   * 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 टूल के कई वर्शन के साथ काम कर सके. अडैप्टर को कई वर्शन के साथ काम करने के लिए, पुष्टि करें कि आपने SDK टूल के रनटाइम वर्शन की जानकारी दी हो. हर विज्ञापन दिखाने के अनुरोध में, IMA SDK टूल, अडैप्टर के वर्शन के साथ रनटाइम वर्शन की जानकारी शामिल करता है.

यहां दिए गए उदाहरणों में, 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]);
  }
  ...

Google के साथ अडैप्टर रजिस्टर करना

Google से सिग्नल इकट्ठा करने के लिए, अडैप्टर को अनुमति पाने के लिए, आपको Android पैकेज का नाम या Google के साथ रजिस्टर करना होगा. IMA SDK टूल, सिर्फ़ उन अडैप्टर को शुरू करता है जिन्हें आपने Google के साथ रजिस्टर किया है.

अडैप्टर की पुष्टि करना

अडैप्टर की पुष्टि करने के लिए, यहां दिए गए सेक्शन पूरे करें:

टेस्ट ऐप्लिकेशन को कॉन्फ़िगर करना

अडैप्टर की पुष्टि करने से पहले, टेस्ट ऐप्लिकेशन को कॉन्फ़िगर करें. यह तरीका अपनाएं:

  1. अपने मॉड्यूल की ऐप्लिकेशन-लेवल वाली Gradle फ़ाइल में, IMA SDK टूल के लिए डिपेंडेंसी जोड़ें. जैसे, app/build.gradle:

    dependencies {
      implementation 'com.google.ads.interactivemedia.v3:interactivemedia:3.29.0'
    }
    
  2. बिल्ड डिपेंडेंसी जोड़ें. जैसे, आपका अडैप्टर और SDK टूल.

सिग्नल की पुष्टि करना

यह पुष्टि करने के लिए कि आपका अडैप्टर सिग्नल भेजता है, अपने ऐप्लिकेशन के विज्ञापन अनुरोध ट्रैफ़िक की निगरानी करने के लिए, नेटवर्क प्रॉक्सी का इस्तेमाल करें. अगर यह प्रोसेस पूरी हो जाती है, तो आपको हर विज्ञापन दिखाने के अनुरोध में सिग्नल दिखेंगे.

पूरे उदाहरण देखना

इस सेक्शन में, सभी चरणों के पूरी तरह से तैयार उदाहरण दिए गए हैं. इनका इस्तेमाल रेफ़रंस के तौर पर किया जा सकता है.

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