फ़्रीक्वेंसी के हिसाब से क्रिएटिव चुनें

किसी यूआरएल को चुनने और उसे फ़ेन्स्ड फ़्रेम में रेंडर करने के लिए, Shared Storage के लिए वर्कलेट चलाएं.

Shared Storage API, Privacy Sandbox का एक प्रस्ताव है. इसका इस्तेमाल, अलग-अलग कामों के लिए और एक से ज़्यादा साइटों पर डेटा सेव करने के लिए किया जाता है. यह कई तरह के इस्तेमाल के उदाहरणों के साथ काम करता है. फ़्रीक्वेंसी कंट्रोल इसका एक उदाहरण है. यह Chrome Beta 104.0.5086.0 और उसके बाद के वर्शन में टेस्ट करने के लिए उपलब्ध है.

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

फ़्रीक्वेंसी के हिसाब से क्रिएटिव चुनने की सुविधा को टेस्ट करना

शेयर्ड स्टोरेज और फ़ेंस किए गए फ़्रेम की मदद से, फ़्रीक्वेंसी के हिसाब से क्रिएटिव चुनने की सुविधा को आज़माने के लिए, पक्का करें कि आपके पास Chrome 104.0.5086.0 या इसके बाद का वर्शन हो. chrome://settings/adPrivacy में जाकर, विज्ञापन देखने वाले की निजता बनाए रखने से जुड़े सभी एपीआई चालू करें.

कमांड लाइन में --enable-features=PrivacySandboxAdsAPIsOverride,OverridePrivacySandboxSettingsLocalTesting,SharedStorageAPI,FencedFrames फ़्लैग का इस्तेमाल करके भी, शेयर किए गए स्टोरेज की सुविधा चालू की जा सकती है.

कोड सैंपल आज़माएँ

ओपेक यूआरएल चुनने और बनाने के लिए, शेयर किए गए स्टोरेज का डेटा पढ़ने के लिए वर्कलेट मॉड्यूल रजिस्टर करें. वर्कलेट क्लास को ज़्यादा से ज़्यादा आठ यूआरएल की सूची मिलती है. इसके बाद, यह चुने गए यूआरएल का इंडेक्स दिखाता है.

जब क्लाइंट sharedStorage.selectURL() को कॉल करता है, तब वर्कलेट काम करता है और एक अपारदर्शी यूआरएल दिखाता है. इसे फ़ेंस किए गए फ़्रेम में रेंडर किया जाता है.

मान लें कि आपको किसी उपयोगकर्ता को पहले दिखाए गए विज्ञापन या कॉन्टेंट की फ़्रीक्वेंसी के आधार पर, कोई दूसरा विज्ञापन या कॉन्टेंट दिखाना है. आपके पास यह गिनने का विकल्प होता है कि किसी उपयोगकर्ता ने कोई कॉन्टेंट कितनी बार देखा है. साथ ही, उस वैल्यू को शेयर किए गए स्टोरेज में सेव किया जा सकता है. शेयर किए गए स्टोरेज में वैल्यू सेव होने के बाद, यह अलग-अलग ऑरिजिन पर आपके लिए उपलब्ध हो जाती है.

इसके बाद, शेयर किया गया स्टोरेज वर्कलेट, शेयर किए गए स्टोरेज में मौजूद वैल्यू को पढ़ता है. साथ ही, हर अतिरिक्त व्यू के साथ काउंटर को बढ़ाता है. अगर गिनती पहले से तय की गई सीमा तक नहीं पहुंची है, तो आपको रेंडर किया जाने वाला कॉन्टेंट (इंडेक्स 1) दिखता है. अगर ऐसा नहीं होता है, तो डिफ़ॉल्ट यूआरएल (इंडेक्स 0) दिखता है.

इस उदाहरण में:

  • creative-selection-by-frequencyjs को कॉन्टेंट बनाने वाले व्यक्ति या कंपनी या विज्ञापन देने वाले व्यक्ति या कंपनी के iframe के ज़रिए लोड किया जाता है. साथ ही, यह शेयर किए गए स्टोरेज वर्कलेट को लोड करने और ओपेक सोर्स को फ़ेंस किए गए फ़्रेम में रेंडर करने के लिए ज़िम्मेदार होता है.
  • creative-selection-by-frequency-worklet.js शेयर किया गया स्टोरेज वर्कलेट है. यह फ़्रीक्वेंसी काउंट को पढ़ता है, ताकि यह तय किया जा सके कि किसी कॉन्टेंट या विज्ञापन क्रिएटिव के लिए कौनसा यूआरएल दिखाया जाए.

creative-selection-by-frequency.js

// The first URL is the default content or ad to be rendered when the frequency limits reached.
const CONTENT_URLS = [
  { url: `https://${contentProducerUrl}/default-content.html` },
  { url: `https://${contentProducerUrl}/example-content.html` },
];

async function injectAd() {
  // Load the worklet module.
  await window.sharedStorage.worklet.addModule('creative-selection-by-frequency-worklet.js');

  // Set the initial frequency count
  window.sharedStorage.set('frequency-count', 0, {
    ignoreIfPresent: true,
  });

  // Run the URL selection operation to choose an ad based on the frequency count in shared storage.
  const fencedFrameConfig = await window.sharedStorage.selectURL('creative-selection-by-frequency', CONTENT_URLS, {
    resolveToConfig: true
  });

  // Render the opaque URL into a fenced frame
  document.getElementById('content-slot').config = fencedFrameConfig;
}

injectAd();

creative-selection-by-frequency-worklet.js

const FREQUENCY_LIMIT = 5;

class CreativeSelectionByFrequencyOperation {
  async run(urls, data) {
    // Read the current frequency limit in shared storage
    const count = parseInt(await sharedStorage.get('frequency-count'));

    // Check if the frequency limit has been reached.
    if (count === FREQUENCY_LIMIT) {
      console.log('Frequency limit has been reached, and the default content will be rendered.');
      return 0;
    }

    // Set the new frequency count in shared storage
    await sharedStorage.set('frequency-count', count + 1);
    return 1;
  }
}

// Register the operation as 'creative-selection-by-frequency'.
register('creative-selection-by-frequency', CreativeSelectionByFrequencyOperation);

उपयोग के उदाहरण

Select URL API के इस्तेमाल के सभी उपलब्ध उदाहरण, इस सेक्शन में देखे जा सकते हैं. हमें सुझाव, राय, और शिकायत मिलने पर, हम नए उदाहरण जोड़ते रहेंगे. साथ ही, नए टेस्ट केस भी जोड़ते रहेंगे.

सुझाव/राय देना या शिकायत करना

ध्यान दें कि Select URL API के सुझाव पर अभी चर्चा चल रही है और इसे डेवलप किया जा रहा है. इसलिए, इसमें बदलाव हो सकता है.

हमें Select URL API के बारे में आपके सुझाव/राय का इंतज़ार है.