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

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

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

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

इस डिज़ाइन का मकसद, विज्ञापन दिखाने वाले SDK टूल या मेज़रमेंट पार्टनर को विज्ञापन दिखने से जुड़े इस डेटा का हिसाब लगाने में मदद करना है (नामों में बदलाव हो सकता है):

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

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

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

डिज़ाइन का प्रपोज़ल

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

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

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

एपीआई

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

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

आने वाले समय में बेहतर बनाने की सुविधा

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

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

खुले सवाल

हम इन बातों के बारे में सुझाव/राय/शिकायत/राय देने के लिए आपसे अनुरोध करते हैं:

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