SDK टूल के रनटाइम में विज्ञापन दिखने से जुड़े आंकड़ों के डिज़ाइन का प्रपोज़ल

SDK टूल के रनटाइम में मौजूद, विज्ञापन दिखाने के लिए इस्तेमाल किए जाने वाले SDK टूल, पब्लिशर के व्यू हैरारकी को ऐक्सेस नहीं कर सकते. इसके बजाय, रनटाइम में SDK टूल का अपना अलग व्यू होता है. SDK टूल उन व्यू एपीआई का इस्तेमाल नहीं कर सकता जिनका इस्तेमाल वे SDK टूल के रनटाइम के बाहर इस्तेमाल करके, यह पता लगाने के लिए करते हैं कि उपयोगकर्ता को विज्ञापन दिखेगा या नहीं. इसकी वजह यह है कि विज्ञापन व्यू, ऐप्लिकेशन की विंडो से अटैच नहीं होता. इसमें getLocationOnScreen, getLocationInWindow या getVisibility जैसे Android के व्यू एपीआई शामिल हैं, जो अनुमानित वैल्यू नहीं दिखाते.

SDK टूल के रनटाइम की ज़रूरी शर्त, विज्ञापन दिखने से जुड़े आंकड़ों के मेज़रमेंट को सपोर्ट करना है. इस डिज़ाइन प्रस्ताव का मकसद, ओपन मेज़रमेंट और मेज़रमेंट की मिलती-जुलती सेवाओं के लिए सहायता पाना है. यहां बताए गए समाधान, Attribution Reporting API पर लागू हो सकते हैं. इस प्रस्ताव पर आपके फ़ीडबैक का सुझाव दिया जाता है.

मिलने वाली अनुमतियां

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

इलस्ट्रेशन में दिखाया गया है कि SDK टूल के रनटाइम में विज्ञापन दिखने से जुड़े आंकड़ों के कॉम्पोनेंट आपस में कैसे इंटिग्रेट होते हैं
SDK टूल का रनटाइम, विज्ञापन दिखने से जुड़े आंकड़ों के बारे में खास जानकारी.
  • viewport [Rect]: प्लैटफ़ॉर्म की क्षमताओं के आधार पर, डिवाइस की स्क्रीन या ऐप्लिकेशन विंडो की ज्यामिति दिखती है.
  • uiContainerGeometry [Rect]: रेंडर किए जा रहे SandboxedSdkView की ज्यामिति.
  • alpha [float]: रेंडर किए जा रहे SandboxedSdkView की ओपैसिटी.
  • onScreenGeometry [Rect]: uiContainerGeometry का सबसेट, जिसे पैरंट व्यू के हिसाब से क्लिप नहीं किया जाता है. इसमें viewport के अलावा, और भी चीज़ें शामिल हो सकती हैं.
  • occludedGeometry [Rect]: onScreenGeometry के वे हिस्से जो ऐप्लिकेशन के हैरारकी में किसी भी व्यू से रुकावट पैदा करते हैं. हर ऑक्लूज़न के लिए Rect मौजूद है. साथ ही, शून्य, एक या उससे ज़्यादा ऐप्लिकेशन व्यू के हिसाब से, जो SandboxedSdkView onScreenGeometry से मिलते-जुलते हैं

ज़रूरी शर्तें

  • uiContainerGeometry, onScreenGeometry, और occludedGeometry के वैल्यू को viewport के निर्देशांक स्पेस में दिखाया जाता है.
  • वीडियो के दिखने में होने वाले बदलाव की रिपोर्टिंग, इंतज़ार का समय कम से कम के साथ होती है.
  • विज्ञापन व्यू के पूरे लाइफ़साइकल के लिए, विज़िबिलिटी का आकलन किया जा सकता है.

डिज़ाइन का प्रस्ताव

यह प्रस्ताव इस पर आधारित है कि क्लाइंट और प्रोवाइडर की यूज़र इंटरफ़ेस (यूआई) लाइब्रेरी का इस्तेमाल करके, यूज़र इंटरफ़ेस (यूआई) प्रज़ेंटेशन कैसे काम करता है. हम यूज़र इंटरफ़ेस (यूआई) लाइब्रेरी का दायरा बढ़ाएंगे, ताकि SDK टूल यूज़र इंटरफ़ेस (यूआई) सेशन के एक या उससे ज़्यादा ऑब्ज़र्वर को रजिस्टर कर सके. जब भी capabilities सेक्शन में, डेटा टाइप में बदलाव करने वाले सही इवेंट का पता चलता है, तो ऑब्ज़र्वर को विज्ञापन दिखने से जुड़े आंकड़ों की जानकारी मिलेगी. SDK टूल के रनटाइम (OMID और MRAID लागू करने के तरीके) में मेज़रमेंट SDK टूल, इस ऑब्ज़र्वर को यूज़र इंटरफ़ेस (यूआई) सेशन से अटैच कर सकते हैं, ताकि उन्हें यह जानकारी सीधे तौर पर भेजी जा सके. मेज़रमेंट पार्टनर, यूज़र इंटरफ़ेस (यूआई) लाइब्रेरी से मिली जानकारी को, पहले से उपलब्ध कॉन्टेंट के डेटा के साथ जोड़ सकते हैं. जैसे, विज्ञापन क्रिएटिव में इंजेक्ट की गई मेज़रमेंट स्क्रिप्ट का इस्तेमाल करते समय, JavaScript दिखने से जुड़े इवेंट जनरेट करने के लिए.

विज्ञापन दिखने से जुड़े आंकड़ों के लिए कंट्रोल फ़्लो.
विज्ञापन दिखने से जुड़े आंकड़ों का फ़्लो कंट्रोल करें.

क्लाइंट लाइब्रेरी, इवेंट लिसनर जैसे ViewTreeObserver की मदद से, विज्ञापन यूज़र इंटरफ़ेस (यूआई) में हुए बदलावों को सुनती है. जब भी इसे पता चलता है कि विज्ञापन यूज़र इंटरफ़ेस (यूआई) इस तरह से बदला है जिससे विज्ञापन दिखने से जुड़े आंकड़ों के मेज़रमेंट पर असर पड़ सकता है, तो क्लाइंट लाइब्रेरी यह जांच करती है कि ऑब्ज़र्वर को आखिरी सूचना कब भेजी गई थी. अगर आखिरी अपडेट, इंतज़ार के समय (SDK टूल इसे मोबाइल पर कम से कम 200 मि॰से॰ तक कॉन्फ़िगर किया जा सकता है) से ज़्यादा हो, तो नया AdContainerInfo ऑब्जेक्ट बनाया जाता है और ऑब्ज़र्वर को एक सूचना भेजी जाती है. इवेंट पर आधारित यह मॉडल, आज से Android पर OMID लागू करने वाले ज़्यादातर पोलिंग की तुलना में सिस्टम की परफ़ॉर्मेंस के लिए बेहतर है.

API

इन चीज़ों को privacysandbox.ui.core लाइब्रेरी में जोड़ा जाएगा:

  • SessionObserver: आम तौर पर, इसे मेज़रमेंट SDK टूल के ज़रिए लागू किया जाता है. यह प्रोसेस, privacysandbox.ui की मदद से SDK टूल से मिलने वाले सेशन से अटैच होता है. इस इंटरफ़ेस की मदद से मेज़रमेंट SDK टूल भी, विज्ञापन दिखने से जुड़े आंकड़ों की कुछ कैटगरी के लिए ऑप्ट-इन कर सकेगा. इससे यूज़र इंटरफ़ेस (यूआई) क्लाइंट लाइब्रेरी, सिर्फ़ ऐसे सिग्नल इकट्ठा करती है जिनमें मॉनिटर करने वाले की दिलचस्पी होती है. यह सिस्टम की हेल्थ के लिए बेहतर है.
  • registerObserver(): Session क्लास में यह तरीका जोड़ा गया है. सेशन का ऐक्सेस रखने वाला कोई भी व्यक्ति, ऑब्ज़र्वर को रजिस्टर कर सकता है. अगर यूज़र इंटरफ़ेस (यूआई) सेशन खोलने के बाद, ऑब्ज़र्वर को रजिस्टर किया जाता है, तो उसे तुरंत AdContainerInfo कैश मेमोरी में भेज दिया जाएगा. अगर सेशन शुरू होने से पहले रजिस्टर किया जाता है, तो सेशन शुरू होने पर उन्हें AdContainerInfo भेजा जाएगा.
  • AdContainerInfo: गैटर वाली ऐसी क्लास जिसकी मदद से, ऑब्ज़र्वर को ऊपर दिए गए कैपबिलिट सेक्शन में बताए गए डेटा टाइप के लिए, विज्ञापन कंटेनर की रीड-ओनली सुविधा की जानकारी मिलती है. इन गैटर से मिलने वाली रिटर्न वैल्यू, जहां भी मुमकिन होगा, View और उसकी सब-क्लास में मौजूद इकट्ठा की जा सकने वाली रिटर्न वैल्यू के मुताबिक होंगी. अगर विज्ञापन कंटेनर को Jetpack Compose का इस्तेमाल करके बनाया गया है, तो इससे कंटेनर की सिमैंटिक प्रॉपर्टी दिखती है. इस क्लास का इस्तेमाल, विज्ञापन दिखने से जुड़े आंकड़ों से जुड़े MRAID और OMID इवेंट का पता लगाने के लिए किया जा सकता है.
  • SessionObserverotifyAdContainerChanged(): इसका इस्तेमाल, विज्ञापन दिखने से जुड़े आंकड़ों में बदलाव होने पर, ऑब्ज़र्वर को सूचना देने के लिए किया जाता है. यह एक AdContainerInfo ऑब्जेक्ट पास करता है. इसे तब कहा जाता है, जब ऐसे इवेंट का पता चलता है जो 'क्षमता' सेक्शन में दिए गए डेटा टाइप पर असर डालते हैं. ध्यान दें: सेशन के तरीकों के अलावा, इस तरीके को भी कॉल किया जा सकता है. उदाहरण के लिए, विज्ञापन का साइज़ बदलने के लिए, Session.notifyResized() को कॉल किया जाता है और SDK टूल से विज्ञापन का साइज़ बदलने का अनुरोध किया जाता है. ऐसा होने पर, SessionObserver.notifyAdContainerChanged() को भी कॉल किया जाता है.
  • SessionObserverotifySessionClosed(): ऑब्ज़र्वर को यह सूचना देता है कि सेशन बंद कर दिया गया है.

आने वाले समय में किए जाने वाले बदलाव

अगर ऐप्लिकेशन से छेड़छाड़ की जाती है, तो ऐप्लिकेशन प्रोसेस में चलने वाले किसी भी कोड में privacysandbox.ui.client लाइब्रेरी के कोड सहित बदलाव किए जा सकते हैं. इसलिए, ऐप्लिकेशन प्रोसेस में चलने वाले किसी भी सिग्नल कलेक्शन लॉजिक में, ऐप्लिकेशन कोड से छेड़छाड़ किए जाने का खतरा ज़्यादा होता है. यह नीति, आवेदन की प्रोसेस में चलने वाले प्राइवसी सैंडबॉक्स के उपलब्ध होने से पहले डिप्लॉय किए गए SDK टूल कोड पर भी लागू होती है. इसी वजह से, यूज़र इंटरफ़ेस (यूआई) लाइब्रेरी से सिग्नल इकट्ठा करने से, सुरक्षा पर स्थिति खराब नहीं होती.

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

खुले सवाल

हम इन विषयों के बारे में सुझाव/राय देते हैं या शिकायत करते हैं:

  1. आपकी दिलचस्पी ऐसे कौनसे विज्ञापन दिखने से जुड़े सिग्नल में है जिनके बारे में इस जानकारी में नहीं बताया गया है?
  2. मौजूदा प्रस्ताव यह है कि विज्ञापन दिखने से जुड़े आंकड़े को कम से कम हर 200 मिलीसेकंड में अपडेट किया जाए. हालांकि, इसके लिए यूज़र इंटरफ़ेस (यूआई) में ज़रूरी बदलाव किया गया हो. क्या यह फ़्रीक्वेंसी आपके लिए सही है? अगर नहीं, तो आपके हिसाब से फ़्रीक्वेंसी क्या है?
  3. आपको setTrustedPresentationCallback से मिली जानकारी का विश्लेषण करना है या क्लाइंट यूज़र इंटरफ़ेस (यूआई) लाइब्रेरी से डेटा उपलब्ध कराने वाली कंपनी की यूज़र इंटरफ़ेस (यूआई) लाइब्रेरी से डेटा शेयर करने पर, जब यह setTrustedPresentationCallback के डेटा से मेल नहीं खाता है?
  4. विज्ञापन दिखने से जुड़े आंकड़ों के सिग्नल का इस्तेमाल, किस तरह किया जाता है? इन सवालों के जवाब देने के लिए, सुझाव, शिकायत या राय दें, ताकि हम आपके इस्तेमाल के उदाहरणों को समझ सकें.