सुरक्षित ऑडियंस की फ़्रीक्वेंसी कैपिंग

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

इस प्रस्ताव में बताया गया है कि कैसे Android पर Protected Audience का, सटीक और निजता बनाए रखने के तरीके से फ़्रीक्वेंसी कैपिंग की सुविधा को लागू करने के लिए इस्तेमाल किया जा सकता है.

Protected Audience, दो सुविधाओं को मिलाकर फ़्रीक्वेंसी कैपिंग लागू करती है: विज्ञापन से जुड़े इवेंट के लिए काउंटर का डिवाइस पर स्टोरेज और पहले से तय फ़िल्टर की रणनीतियों के हिसाब से विज्ञापनों को फ़िल्टर करने की सुविधा. फ़्रीक्वेंसी कैपिंग की मदद से, विज्ञापन देने वाले किसी दी गई समयावधि के लिए हिस्टोग्राम की वैल्यू के कुल योग पर काउंटर थ्रेशोल्ड दिखा सकते हैं.

डिवाइस प्रोफ़ाइल, विज्ञापन टेक्नोलॉजी, और काउंटर कुंजी के हर कॉम्बिनेशन के लिए काउंटर यूनीक होते हैं. प्रत्येक विज्ञापन में काउंटर कुंजी का एक सेट होना चाहिए, ताकि उसका दृश्य या इंप्रेशन दर्ज होने पर उसका उपयोग किया जा सके. हर कुंजी के लिए, Protected Audience में कई काउंटर स्टोर होते हैं. हर काउंटर एक खास समयावधि में होने वाले विज्ञापन से जुड़े सभी इवेंट का मिलान करता है. कोई इंप्रेशन या व्यू होने पर, उपयोगकर्ता के डिवाइस पर मौजूद काउंटर बढ़ जाते हैं. साथ ही, डिवाइस पर काउंटर डेटा पहले जैसा बना रहता है. सटीक परसिस्टेंस टाइम बाद में तय किया जाएगा.

Protected Audience के विज्ञापन चुनने के वर्कफ़्लो में विज्ञापन फ़िल्टर करने के लॉजिक के पास काउंटर, रीमार्केटिंग विज्ञापनों, और काम के विज्ञापनों का ऐक्सेस होता है. इससे प्रोटेक्टेड ऑडियंस फ़्रीक्वेंसी कैपिंग को, इस तरह के सभी विज्ञापन अनुरोधों के साथ काम करने की सुविधा मिलती है.

ध्यान दें: विज्ञापन फ़िल्टर करने की सुविधा, सिर्फ़ Android पर प्राइवसी सैंडबॉक्स में उपलब्ध है. फ़िलहाल, Chrome की Protected Audience की सुविधा, कॉन्टेक्स्ट के हिसाब से टारगेट की गई गैर-सुरक्षित ऑडियंस विज्ञापनों को फ़िल्टर करने के लिए कोई प्रोसेस लागू नहीं करती. इस प्रस्ताव में सिर्फ़ खरीदारी के पक्ष में मदद शामिल है. अगर मांग पूरी होती है, तो हम बाद में सेल-साइड सपोर्ट की सुविधा भी देंगे.

सुरक्षित ऑडियंस की फ़्रीक्वेंसी कैपिंग कई तरह की ज़रूरी शर्तों को पूरा करती है. इनमें ये शामिल हैं:

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

फ़्रीक्वेंसी कैपिंग सेट अप करने के लिए, यह तरीका अपनाएं:

पहला चरण: विज्ञापनों में फ़्रीक्वेंसी कैपिंग की जानकारी जोड़ना

प्रासंगिक और रीमार्केटिंग विज्ञापन, आर्बिट्रेरी पूर्णांक की सूची वाले ad_counter_keys फ़ील्ड का इस्तेमाल करके, व्यू या इंप्रेशन होने पर अपडेट करने के लिए काम के हिस्टोग्राम काउंटर दिखाते हैं. फ़ील्ड को उस metadata फ़ील्ड में शामिल नहीं किया गया है जिसे सुरक्षित ऑडियंस ने पार्स नहीं किया है.

इस उदाहरण में, AdSelectionConfig में adsData फ़ील्ड का डेटा फ़ॉर्मैट दिखाया गया है. रीमार्केटिंग के लिए, किसी खास कस्टम ऑडियंस के लिए विज्ञापनों की सूची का फ़ॉर्मैट ads फ़ील्ड की सामग्री के मुताबिक होता है, जैसा कि यहां दिए गए उदाहरण में दिखाया गया है:

'adsData': [
  {
    "buyer": "ads.example.com",
    "ads": [
      {
        'render_url': 'exampleUrl',
        'metadata': {...},   /* metadata are opaque to Protected Audience are
                                required to be in valid JSON format */
        'ad_counter_keys': [1234, 5678]
      }]
  }]
}

दूसरा चरण: व्यू या इंप्रेशन रजिस्टर करना

विज्ञापन टेक्नोलॉजी, फ़्रीक्वेंसी कैपिंग के लिए इस्तेमाल होने वाले इवेंट को रजिस्टर करने के लिए, updateAdCounterHistogram तरीके को शुरू कर सकती हैं. जीतने वाले विज्ञापन की eventType में दी गई कुंजियों के लिए, एक ही इवेंट के लिए बार-बार एक तरीके का इस्तेमाल किया जा सकता है.

void updateAdCounterHistogram(@EventType eventType, long adSelectionId)

इनपुट:

  • eventType: इससे पता चलता है कि किसी इवेंट को व्यू, इंप्रेशन, क्लिक या विज्ञापन चुनने की प्रोसेस के जीतने के तौर पर गिना गया है या नहीं.
  • adSelectionId: AdSelectionOutcome ऑब्जेक्ट में आईडी की वैल्यू, जो selectAds कॉल से मिलती हैं.

updateAdCounterHistogram कॉल, CustomAudience से फ़ेच किए गए रीमार्केटिंग विज्ञापनों के हिस्से के तौर पर तय की गई कुंजियों के सेट के लिए हिस्टोग्राम अपडेट करता है. इसके अलावा, selectAds के लिए AdSelectionConfig पैरामीटर में शामिल काम के विज्ञापनों के लिए भी हिस्टोग्राम अपडेट करता है.

अगर आपको लगता है कि पहले चरण में मौजूद विज्ञापन, 9999 की id वैल्यू के साथ AdSelection का विजेता है, तो updateAdCounterHistogram(FrequencyCapFilters.AD_EVENT_TYPE_VIEW, adSelectionId: 999) को किया जाने वाला कॉल इन तीन मुख्य कुंजियों के लिए काउंटर बढ़ा देता है:

  • {'ads.example.com', 1234, VIEW}
  • {'ads.example.com', 5678, VIEW}

विज्ञापन टेक्नोलॉजी का नाम, खरीदार के फ़ील्ड से लिया जाता है. यह नाम, कॉन्टेक्स्ट के हिसाब से दिखाए जाने वाले विज्ञापनों या कस्टम ऑडियंस से लिया जाता है. यह इस बात पर निर्भर करता है कि जीतने वाले विज्ञापन कहां से आते हैं.

Android के लिए Protected Audience, selectAds एपीआई कॉल के ज़रिए दिखाए गए विज्ञापनों के लिए इवेंट टाइप FrequencyCapFilters.AD_EVENT_TYPE_WIN के लिए ऊपर बताए गए सभी काउंटर में अपने-आप बढ़ोतरी कर देती है. यह फ़ंक्शन, Chrome के Protected Audience को लागू करने में, generateBid में browser_signals में prev_wins आर्ग्युमेंट जोड़ने की प्रोसेस के बराबर है.

तीसरा चरण: फ़िल्टर की मदद से फ़्रीक्वेंसी कैप फ़िल्टर लागू करना

सबसे अच्छी परफ़ॉर्मेंस के लिए, फ़्रीक्वेंसी कैप को फ़िल्टर करने वाला फ़ंक्शन AdServices में लागू किया जाता है. Protected Audience को यह पता चलता है कि किसी मैसेज को AdsData ऑब्जेक्ट में मौजूद फ़िल्टर फ़ील्ड को पढ़कर, फ़िल्टर करना है या नहीं. frequency_cap में फ़िल्टर की एक सूची दी गई है. कुंजी, event_type, और interval_in_seconds की वैल्यू का इस्तेमाल इवेंट के हिस्टोग्राम के लिए किया जाता है. इनका इस्तेमाल, सुरक्षित ऑडियंस को फ़िल्टर करने और फ़िल्टर करने के लिए किया जाता है.

फ़िल्टर करने की जानकारी कस्टम ऑडियंस से मिले रीमार्केटिंग विज्ञापनों और AdSelectionConfig ऑब्जेक्ट के हिस्से के तौर पर काम के विज्ञापनों के लिए दी जा सकती है.

फ़्रीक्वेंसी कैप फ़िल्टर वाले काम के विज्ञापनों के लिए, विज्ञापनों को AdSelectionConfig ऑब्जेक्ट के विज्ञापन फ़ील्ड का इस्तेमाल करके पास किया जाता है. विज्ञापन फ़िल्टर किए जाते हैं और selectAds कॉल के नतीजे के तौर पर, सबसे ऊंची बोली वाला विज्ञापन दिखाया जाता है.

फ़्रीक्वेंसी कैप फ़िल्टर वाले रीमार्केटिंग विज्ञापनों के लिए, विज्ञापन खरीदार के दिए गए generateBid() JavaScript फ़ंक्शन को शुरू करने से पहले फ़िल्टर किए जाते हैं.

इस उदाहरण में, फ़्रीक्वेंसी कैप को फ़िल्टर करने वाला मैसेज दिखाया गया है:

{
  'render_url': 'url',
  'metadata': {...},   /* metadata are opaque to Protected Audience and assumed
                        to be in valid JSON format */

  'ad_counter_keys': [1234, 5678],

  "filters": {
    "frequency_cap": {
      "view": [
        {
          "ad_counter_key": 1234
          "max_count": 10,
          "interval_in_seconds": 86400
        },
        {
          "ad_counter_key": 5678
          "max_count": 10,
          "interval_in_seconds": 86400
        },
      ],
      "win": [
        {
          "ad_counter_key": 1234
          "max_count": 5,
          "interval_in_seconds": 604800
        },
        {
          "ad_counter_key": 5678
          "max_count": 5,
          "interval_in_seconds": 345600
        },
      ]
    },

  // This field is only required in contextual ads and is used in
  // reportImpression calls to fetch the reportWin function.
  'reportingJS': "https://ads.example.com?reportWin.js"
}

चौथा चरण: सफल विज्ञापनों की रिपोर्ट

विज्ञापन चुनने की प्रोसेस पूरी होने के बाद, यह renderUri और adSelectionId वाला AdSelectionOutcome ऑब्जेक्ट दिखाता है, जो selectAds कॉल के लिए न्यूमेरिक आइडेंटिफ़ायर होता है. इस आईडी का इस्तेमाल, उस reportImpression API को शुरू करने के लिए किया जा सकता है जो फ़िलहाल इवेंट-लेवल रिपोर्टिंग का इस्तेमाल करता है. बीटा 1 में, यह विधि रीमार्केटिंग विज्ञापनों के लिए रिपोर्टिंग का समर्थन करती है और बाद की रिलीज़ में इसे प्रासंगिक विज्ञापनों की रिपोर्टिंग के लिए समर्थित किया जाएगा. संदर्भ के हिसाब से दिखाए जाने वाले विज्ञापनों के लिए, खरीदार को यह बताना होगा कि विज्ञापन में, reportingJS नाम के एक अतिरिक्त फ़ील्ड का इस्तेमाल करके, reportImpression कॉल के दौरान reportWin फ़ंक्शन को कहां वापस लिया जा सकता है, जैसा कि ऊपर दिए गए उदाहरण में दिखाया गया है.

विज्ञापन के लिए उम्मीदवार चुनने के सबसे सही तरीके

Protected Audience, फ़्रीक्वेंसी कैपिंग को सर्वर से डिवाइस पर लागू करती है. हालांकि, सफल बिड को प्राइवसी सैंडबॉक्स की मदद से रिपोर्ट किया जाता है, लेकिन डेवलपर को यह पता नहीं चलेगा कि विज्ञापन क्यों नहीं दिखाया गया है. हो सकता है कि बोली खो जाने या फ़्रीक्वेंसी कैपिंग की वजह से विज्ञापन न दिखाए जाएं. कुछ विज्ञापनों के सफल न होने की वजहों के बारे में जानकारी न होने पर, बिडिंग सिस्टम को बेहतर विज्ञापन दिखाने के लिए, अलग से काम करने की ज़रूरत होती है. इन सबसे सही तरीकों से, यह पक्का करने में मदद मिलेगी कि सुरक्षित ऑडियंस के साथ बेहतर तरीके से विज्ञापन दिखाया जा सके.

ज़रूरत के मुताबिक रीमार्केटिंग विज्ञापन भेजें

रीमार्केटिंग विज्ञापनों को हर उपयोगकर्ता के हिसाब से ऑप्टिमाइज़ नहीं किया जा सकता. अगर कोई उपयोगकर्ता, कस्टम ऑडियंस के बहुत ज़्यादा विज्ञापन देखता है और विज्ञापन की सीमाएं कम हैं, तो सभी विज्ञापनों को फ़िल्टर किया जा सकता है. रीमार्केटिंग विज्ञापनों को समय-समय पर रीफ़्रेश किया जाता है. इसलिए, ज़रूरत के मुताबिक विज्ञापन इन्वेंट्री को फ़्रीक्वेंसी कैपिंग से गुज़रना ज़रूरी है, ताकि रीमार्केटिंग विज्ञापनों को लगातार दिखाया जा सके. इसे joinCustomAudience कॉल के दौरान और कस्टम ऑडियंस के रोज़ अपडेट होने के दौरान, विज्ञापनों के साइज़ की सीमाओं के साथ संतुलित किया जाना चाहिए. खरीदारों को इस बात का ध्यान रखना होगा कि बिडिंग के चरण के दौरान इंतज़ार का समय बढ़ सकता है. इन समस्याओं के असर को कम करने के लिए, generateBid पर कॉल करने से पहले, फ़्रीक्वेंसी कैप को फ़िल्टर किया जाता है.

संदर्भ के हिसाब से काउंटर को सर्वर पर बनाए रखें

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

प्रासंगिक जवाब पर एक से ज़्यादा विज्ञापन उम्मीदवार भेजें

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

आवेदन समय-समय पर होता है. इसलिए, नीलामी जीतने की संभावना के हिसाब से ही विज्ञापन उम्मीदवारों को चुना जाना चाहिए. साथ ही, उन्हें फ़िल्टर करके नहीं चुना जाना चाहिए.

सीमाएं

सुरक्षित ऑडियंस फ़्रीक्वेंसी कैपिंग की सीमाएं नीचे दी गई हैं:

  1. प्रोटेक्टेड ऑडियंस फ़्रीक्वेंसी कैपिंग, डिवाइस के उपयोगकर्ता के प्रोफ़ाइल लेवल पर काम करती है. इसमें दूसरे डिवाइसों और अन्य प्रोफ़ाइलों पर शेयर किए गए काउंटर नहीं होते. ज़रूरत पड़ने पर, दूसरे डिवाइस से दिखाए जाने वाले विज्ञापनों की किसी भी बढ़ोतरी को मैन्युअल रूप से शामिल किया जाना चाहिए.
  2. डिवाइस काउंटर, डिवाइस में सेव और ऐक्सेस किए जाते हैं. सर्वर-साइड काउंटर को अलग से मैनेज करना पड़ता है.
  3. फ़्रीक्वेंसी कैपिंग और मिलते-जुलते विज्ञापन फ़िल्टर करने की सुविधा, डिवाइस पर प्रोसेस होती है. इस वजह से, विज्ञापन टेक्नोलॉजी से जुड़े प्लैटफ़ॉर्म का इन कार्रवाइयों पर सीधा कंट्रोल नहीं होता. डिवाइस की फ़्रीक्वेंसी कैपिंग सीमा को बायपास करने के लिए, विज्ञापन टेक्नोलॉजी से जुड़े प्लैटफ़ॉर्म अलग-अलग फ़िल्टर के साथ कई कैंडिडेट विज्ञापन भेज सकते हैं.
  4. रिकॉर्ड की गई फ़्रीक्वेंसी के आधार पर, बिड घटाने या बढ़ाने की सुविधा काम नहीं करती. generateBid फ़ंक्शन, फ़्रीक्वेंसी काउंटर नहीं देख सकता.