आरंभ करें

पहला चरण, अपने ऐप्लिकेशन में Android PAL SDK टूल जोड़ना है.

Android PAL SDK टूल को लाइब्रेरी के तौर पर जोड़ना

वर्शन 18.0.0 के बाद से, PAL SDK को Google की Maven रिपॉज़िटरी पर होस्ट किया गया है और को आपके ऐप्लिकेशन में इस तरह जोड़ा जा सकता है:

app/build.gradle

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

इसके अलावा, PAL SDK टूल को Google की Maven रिपॉज़िटरी से डाउनलोड करके, मैन्युअल तरीके से आपके ऐप्लिकेशन में जोड़ा जा सकता है.

नॉन्स जनरेट करें

एक "संज्ञा" एन्क्रिप्ट (सुरक्षित) की गई एक स्ट्रिंग है. इसे PAL ने NonceLoader का इस्तेमाल करके जनरेट किया है. PAL SDK टूल के लिए ज़रूरी है कि हर नई स्ट्रीम के अनुरोध के साथ, नया जनरेट किया गया नॉन्स भी हो. हालांकि, एक ही स्ट्रीम में कई विज्ञापन अनुरोधों के लिए, नॉन्स का फिर से इस्तेमाल किया जा सकता है. PAL SDK टूल का इस्तेमाल करके नॉन्स जनरेट करने के लिए, इनमें बदलाव करें MyActivity.java. नॉन्स जनरेट करने के लिए PAL का इस्तेमाल करने वाले ऐप्लिकेशन का सैंपल देखने के लिए, GitHub से Android का उदाहरण डाउनलोड करें.

सबसे पहले, आपको PAL SDK टूल इंपोर्ट करना होगा. इसके बाद, अपने NonceLoader और NonceManager को सेव करने के लिए कुछ निजी प्रॉपर्टी बनानी होंगी. इसके बाद, अपने NonceLoader को शुरू करें.

हमारा सुझाव है कि आप इसके लिए NonceLoader क्लास का सिर्फ़ एक इंस्टेंस बनाएं आपके ऐप्लिकेशन में हर उपयोगकर्ता सेशन को तब तक नहीं चलाया जा सकता, जब तक कि आपके ऐप्लिकेशन में एक से ज़्यादा पेज न हों या इसी लेवल के बराबर हों संरचनाएं. इससे पेज कोरिलर (&correlator) में कोई बदलाव नहीं होता किसी पेज के लाइफ़टाइम या ऐप्लिकेशन पर उपयोगकर्ता के सेशन की अवधि. आपके पास अब भी इन चीज़ों को कंट्रोल करने का विकल्प है स्ट्रीम कोरिलर (&scor), जिसे हर नई स्ट्रीम के लिए एक बार रीसेट किया जाना चाहिए.

एक ही स्ट्रीम के सभी विज्ञापन अनुरोधों का NonceLoader और फ़्रीक्वेंसी कैपिंग और एक्सक्लूज़न के लिए स्ट्रीम कोरिलर वैल्यू सुविधाएं ठीक से काम करती हैं.

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

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

यह फ़ंक्शन, नॉन्स जनरेशन को एसिंक्रोनस तरीके से ट्रिगर करता है. इसलिए, नॉन्स अनुरोध के कामयाब या अस्वीकार होने की स्थिति को हैंडल करने के लिए, आपको AsyncTask लागू करना होगा:

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

नॉन्स मैनेजर बनाने के बाद, नॉन्स को कभी भी इसका इस्तेमाल करके वापस पाया जा सकता है nonceManager.getNonce().

विज्ञापन अनुरोध में नॉन्स अटैच करें

जनरेट किए गए नॉन्स का इस्तेमाल करने के लिए, अपने विज्ञापन टैग को givn पैरामीटर के साथ जोड़ें और नॉन्स वैल्यू का इस्तेमाल करें.

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

प्लेबैक इवेंट ट्रैक करें

आखिर में, आपको अपने प्लेयर के लिए कई इवेंट हैंडलर लागू करने होंगे. जांच के लिए, इन्हें बटन क्लिक इवेंट से अटैच किया जा सकता है. हालांकि, असल में इन्हें सही प्लेयर इवेंट से ट्रिगर किया जाएगा:

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

यहां बताया गया है कि लागू करने के दौरान, हर फ़ंक्शन को कब कॉल करना है:

  • sendPlaybackStart(): जब आपका वीडियो प्लेबैक सेशन शुरू होता है
  • sendPlaybackEnd(): वीडियो चलाने का सेशन खत्म होने पर
  • sendAdClick(): हर बार जब दर्शक किसी विज्ञापन पर क्लिक करता है
  • sendTouch(): खिलाड़ी के साथ हर टच इंटरैक्शन पर

(ज़रूरी नहीं) तीसरे पक्ष के विज्ञापन सर्वर के ज़रिए Google Ad Manager सिग्नल भेजें

जब आप Google Ad Manager के साथ काम करने के लिए अपने तीसरे पक्ष के विज्ञापन सर्वर को सेट अप करते हैं, तो अपने सर्वर के दस्तावेज़ तक पहुंचा जा सकता है, ताकि हर विज्ञापन में नॉन्स वैल्यू को कैप्चर और फ़ॉरवर्ड किया जा सके अनुरोध. यहां दिया गया उदाहरण, विज्ञापन अनुरोध के यूआरएल का है. इसमें nonce पैरामीटर शामिल है. नॉन्स पैरामीटर, PAL SDK टूल से आपके मध्यस्थ सर्वर और फिर Ad Manager तक.

अपने तीसरे पक्ष के विज्ञापन सर्वर को कॉन्फ़िगर करें, ताकि सर्वर की Ad Manager से अनुरोध किया है. यहां ऐसे विज्ञापन टैग का उदाहरण दिया गया है जिसे तीसरे पक्ष का विज्ञापन सर्वर:

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

ज़्यादा जानकारी के लिए, Google Ad Manager का सर्वर-साइड लागू करना देखें गाइड देखें.

Ad Manager, नॉन्स वैल्यू की पहचान करने के लिए givn= खोजता है. तृतीय-पक्ष का विज्ञापन सर्वर को अपने खुद के कुछ मैक्रो का समर्थन करना होगा, जैसे %%custom_key_for_google_nonce%% पर जाकर, उसे नॉन्स क्वेरी पैरामीटर से बदलें आपने पिछले चरण में इसकी जानकारी दी थी. ऐसा करने के तरीके के बारे में ज़्यादा जानकारी तृतीय-पक्ष विज्ञापन सर्वर के दस्तावेज़ों में उपलब्ध होनी चाहिए.