शुरू करें

PAL की मदद से, विज्ञापन अनुरोधों और विज्ञापन चलाने के दौरान, Google को विज्ञापन सिग्नल भेजे जा सकते हैं.

इस गाइड में, अपने ऐप्लिकेशन में Android PAL SDK जोड़ने के बारे में बताया गया है. अगर आपको PAL का इस्तेमाल करके नॉनस जनरेट करने वाला कोई सैंपल ऐप्लिकेशन देखना है, तो GitHub से Android का उदाहरण डाउनलोड करें.

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

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

implementation 'com.google.android.gms:play-services-pal:22.1.0'

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

नॉनस जनरेट करना

नॉन्स एक एन्क्रिप्ट (सुरक्षित) की गई स्ट्रिंग होती है. इसे PAL, NonceLoader क्लास का इस्तेमाल करके जनरेट करता है. PAL को हर स्ट्रीम के अनुरोध के साथ एक यूनीक नॉन्स की ज़रूरत होती है. हालांकि, एक ही स्ट्रीम में कई विज्ञापन अनुरोधों के लिए, नॉनस का दोबारा इस्तेमाल किया जा सकता है. PAL SDK का इस्तेमाल करके नॉनस जनरेट करने के लिए, PAL को इंपोर्ट और सेट अप करने के लिए यहां दिए गए बदलाव करें. साथ ही, नॉनस जनरेट करने के लिए एक फ़ंक्शन बनाएं:

  1. PAL को इंपोर्ट और सेट अप करने के लिए, यह तरीका अपनाएं:

    1. PAL क्लास इंपोर्ट करें:

      import com.google.ads.interactivemedia.pal.ConsentSettings;
      import com.google.ads.interactivemedia.pal.NonceLoader;
      import com.google.ads.interactivemedia.pal.NonceManager;
      import com.google.ads.interactivemedia.pal.NonceRequest;
      import com.google.android.gms.tasks.OnFailureListener;
      import com.google.android.gms.tasks.OnSuccessListener;
      import java.util.HashSet;
      import java.util.Set;
      
      
    2. NonceLoader और NonceManager इंस्टेंस को सेव करने के लिए, निजी वैरिएबल बनाएं:

      private NonceLoader nonceLoader;
      private NonceManager nonceManager;
      
    3. onCreate तरीके में, ConsentSettings इंस्टेंस का इस्तेमाल करके NonceLoader इंस्टेंस को शुरू करें:

      @Override
      protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
      
        // 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 isStorageAllowed = getConsentToStorage();
      
        ConsentSettings consentSettings =
            ConsentSettings.builder().allowStorage(isStorageAllowed).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);
      
        adClickButton = findViewById(R.id.send_click_button);
      
        logView = findViewById(R.id.log_view);
        logView.setMovementMethod(new ScrollingMovementMethod());
      }
      
      

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

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

  2. एक नॉनस जनरेट करें:

    public void generateNonceForAdRequest(View view) {
      logMessage("Generate Nonce Request");
      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();
    
      nonceLoader
          .loadNonceManager(nonceRequest)
          .addOnSuccessListener(
              new OnSuccessListener<NonceManager>() {
                @Override
                public void onSuccess(NonceManager manager) {
                  nonceManager = manager;
                  String nonceString = manager.getNonce();
                  logMessage("Nonce generated");
                  logMessage(nonceString.substring(0, 20) + "...");
                  Log.i(LOG_TAG, "Generated nonce: " + nonceString);
    
                  // From here you would trigger your ad request and move on to initialize content.
                  exampleMakeAdRequest(DEFAULT_AD_TAG + "&givn=" + nonceString);
    
                  adClickButton.setEnabled(true);
                }
              })
          .addOnFailureListener(
              new OnFailureListener() {
                @Override
                public void onFailure(Exception error) {
                  logMessage("Nonce generation failed");
                  Log.e(LOG_TAG, "Nonce generation failed: " + error.getMessage());
                }
              });
    }
    
    

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

    यह फ़ंक्शन, नॉनस को एसिंक्रोनस तरीके से जनरेट करता है. आपको नॉनस के अनुरोध के सफल और असफल, दोनों मामलों को मैनेज करना होगा. nonce manager उपलब्ध होने के बाद, nonceManager.getNonce() तरीके का इस्तेमाल करके विज्ञापन अनुरोध करने से पहले, nonce को वापस पाएं.

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

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

// From here you would trigger your ad request and move on to initialize content.
exampleMakeAdRequest(DEFAULT_AD_TAG + "&givn=" + nonceString);

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

प्लेबैक इवेंट ट्रैक करने के लिए, आपको इवेंट हैंडलर सेट अप करने होंगे, ताकि Google को विज्ञापन सिग्नल भेजे जा सकें:

// Triggered when a user clicks-through on an ad which was requested using a PAL nonce.
public void sendAdClick(View view) {
  logMessage("Ad click sent");
  if (nonceManager != null) {
    nonceManager.sendAdClick();
  }
}

// In a typical PAL app, this is called when a user touch or click is detected,
// on the ad other than an ad click-through.
public void onVideoViewTouch(MotionEvent e) {
  if (nonceManager != null) {
    nonceManager.sendAdTouch(e);
  }
}

// In a typical PAL app, this is called when a content playback session starts.
public void sendPlaybackStart() {
  logMessage("Playback start");
  if (nonceManager != null) {
    nonceManager.sendPlaybackStart();
  }
}

// In a typical PAL app, this is called when a content playback session ends.
public void sendPlaybackEnd() {
  logMessage("Playback end");
  if (nonceManager != null) {
    nonceManager.sendPlaybackEnd();
  }
}

यहां बताया गया है कि आपको अपने कोड में हर फ़ंक्शन को कब कॉल करना चाहिए:

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

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

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

Google Ad Manager के साथ काम करने के लिए, तीसरे पक्ष के विज्ञापन सर्वर को सेट अप करते समय, अपने सर्वर के दस्तावेज़ देखें. इससे आपको हर विज्ञापन अनुरोध में, नॉनस वैल्यू को कैप्चर और फ़ॉरवर्ड करने में मदद मिलेगी. यहां दिए गए उदाहरण में, विज्ञापन अनुरोध का यूआरएल दिखाया गया है. इसमें नॉन्स पैरामीटर शामिल है. नॉन्स पैरामीटर, 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%%. साथ ही, इसे पिछले चरण में दिए गए नॉनस क्वेरी पैरामीटर से बदलना होगा. इसे पूरा करने के तरीके के बारे में ज़्यादा जानकारी, तीसरे पक्ष के विज्ञापन सर्वर के दस्तावेज़ में उपलब्ध है.