SDK রানটাইমে থাকা বিজ্ঞাপন SDK গুলি প্রকাশকের ভিউ হায়ারার্কি অ্যাক্সেস করতে সক্ষম হয় না। পরিবর্তে, রানটাইমে থাকা SDK গুলির নিজস্ব ভিউ থাকে। SDK ব্যবহারকারীর কাছে বিজ্ঞাপনটি দৃশ্যমান কিনা তা নির্ধারণ করতে SDK রানটাইমের বাইরে যে View API ব্যবহার করে তা ব্যবহার করতে পারে না, কারণ বিজ্ঞাপন ভিউটি অ্যাপ্লিকেশনের উইন্ডোতে সংযুক্ত থাকে না। এর মধ্যে রয়েছে getLocationOnScreen , getLocationInWindow , অথবা getVisibility এর মতো Android View API , যা প্রত্যাশিত মান ফেরত দেয় না।
বিজ্ঞাপনের দৃশ্যমানতা পরিমাপকে সমর্থন করা SDK রানটাইমের একটি মূল প্রয়োজনীয়তা। এই নকশা প্রস্তাবনার লক্ষ্য হল ওপেন মেজারমেন্ট এবং অনুরূপ পরিমাপ পরিষেবাগুলির জন্য সমর্থন অর্জন করা। এখানে আলোচিত সমাধানগুলি অ্যাট্রিবিউশন রিপোর্টিং API-এর ক্ষেত্রেও প্রযোজ্য হতে পারে।
ক্ষমতা
এই নকশার লক্ষ্য হল বিজ্ঞাপন SDK বা পরিমাপ অংশীদারদের নিম্নলিখিত দর্শনযোগ্যতা ডেটা গণনা করার জন্য সহায়তা করা (নামগুলি অস্থায়ী এবং পরিবর্তন সাপেক্ষে):
-
viewport [Rect]: প্ল্যাটফর্মের ক্ষমতার উপর নির্ভর করে ডিভাইসের স্ক্রিন বা অ্যাপ উইন্ডোর জ্যামিতি উপস্থাপন করে। -
uiContainerGeometry [Rect]:SandboxedSdkViewএর জ্যামিতি রেন্ডার করা হচ্ছে। -
alpha [float]:SandboxedSdkViewরেন্ডার করা হচ্ছে তার অস্বচ্ছতা। -
onScreenGeometry [Rect]:uiContainerGeometryএর উপসেট যাviewportপর্যন্ত এবং সহ প্যারেন্ট ভিউ দ্বারা ক্লিপ করা হয় না। -
occludedGeometry [Rect]:onScreenGeometryএর অংশগুলি যা অ্যাপ্লিকেশনের শ্রেণিবিন্যাসের যেকোনো ভিউ দ্বারা বাধাগ্রস্ত হয়। প্রতিটি অক্লুশনের জন্য একটিRectঅন্তর্ভুক্ত করে, যা শূন্য, এক, বা একাধিক অ্যাপ ভিউয়ের সাথে সম্পর্কিত যাSandboxedSdkView onScreenGeometryসাথে ছেদ করে।
আবশ্যকতা
-
uiContainerGeometry,onScreenGeometry, এবংoccludedGeometryএর মানগুলিviewportস্থানাঙ্ক স্থানে প্রকাশ করা হয়। - দৃশ্যমানতা পরিবর্তনের প্রতিবেদন ন্যূনতম বিলম্বের সাথে ঘটে।
- বিজ্ঞাপনের প্রথম উপস্থিতি থেকে শেষ পর্যন্ত, সম্পূর্ণ জীবনচক্রের জন্য দৃশ্যমানতা পরিমাপযোগ্য।
নকশা প্রস্তাব
এই প্রস্তাবটি ক্লায়েন্ট এবং প্রোভাইডার UI লাইব্রেরি ব্যবহার করে UI উপস্থাপনা কীভাবে কাজ করে তার উপর ভিত্তি করে তৈরি। আমরা UI লাইব্রেরিগুলিকে প্রসারিত করব যাতে SDK UI সেশনের এক বা একাধিক পর্যবেক্ষক নিবন্ধন করতে পারে। যখনই ক্ষমতা বিভাগে ডেটা টাইপ পরিবর্তন করে এমন প্রাসঙ্গিক ইভেন্ট সনাক্ত করা হয় তখনই পর্যবেক্ষক দৃশ্যমানতার তথ্য পাবেন। SDK রানটাইম ( OMID এবং MRAID বাস্তবায়ন) এর পরিমাপ SDK গুলি এই পর্যবেক্ষককে UI সেশনের সাথে সংযুক্ত করতে পারে, যাতে এই তথ্য সরাসরি তাদের কাছে পাঠানো যায়। পরিমাপ অংশীদাররা UI লাইব্রেরি থেকে প্রাপ্ত তথ্যকে ইতিমধ্যে উপলব্ধ সামগ্রীর ডেটার সাথে একত্রিত করতে পারে (যেমন বিজ্ঞাপন সৃজনশীলতায় ইনজেক্ট করা পরিমাপ স্ক্রিপ্ট ব্যবহার করার সময়) জাভাস্ক্রিপ্ট দর্শনযোগ্যতা ইভেন্ট তৈরি করতে।
ক্লায়েন্ট লাইব্রেরি ViewTreeObserver এর মতো ইভেন্ট লিসেনারের মাধ্যমে বিজ্ঞাপন UI-তে পরিবর্তনগুলি শোনে। যখনই এটি নির্ধারণ করে যে বিজ্ঞাপন UI এমনভাবে পরিবর্তিত হয়েছে যা দৃশ্যমানতা পরিমাপকে প্রভাবিত করতে পারে, তখন ক্লায়েন্ট লাইব্রেরি পরীক্ষা করে যে শেষ বিজ্ঞপ্তিটি কখন পর্যবেক্ষকের কাছে পাঠানো হয়েছিল। যদি শেষ আপডেটটি অনুমোদিত ল্যাটেন্সির চেয়ে বেশি হয় (SDK দ্বারা কনফিগার করা যায়, মোবাইলে সর্বনিম্ন 200ms পর্যন্ত), একটি নতুন AdContainerInfo অবজেক্ট তৈরি করা হয় এবং পর্যবেক্ষকের কাছে একটি বিজ্ঞপ্তি পাঠানো হয়। এই ইভেন্ট-ভিত্তিক মডেলটি আজকের Android-এ বেশিরভাগ OMID বাস্তবায়নের দ্বারা করা পোলিংয়ের চেয়ে সিস্টেম স্বাস্থ্যের জন্য ভাল।
এপিআই
privacysandbox.ui.core লাইব্রেরিতে নিম্নলিখিতগুলি যোগ করা হবে:
-
SessionObserver: সাধারণত পরিমাপ SDK দ্বারা বাস্তবায়িত হয়, যা privacysandbox.ui এর মাধ্যমে SDK দ্বারা ফেরত পাঠানো সেশনের সাথে সংযুক্ত থাকে। এই ইন্টারফেসটি পরিমাপ SDK কে নির্দিষ্ট শ্রেণীর দৃশ্যমানতা সংকেতগুলিতে অপ্ট-ইন করতে সক্ষম করবে। এর ফলে, UI ক্লায়েন্ট লাইব্রেরি কেবলমাত্র সেই সংকেতগুলি সংগ্রহ করতে সক্ষম হবে যা পর্যবেক্ষক আগ্রহী, যা সামগ্রিকভাবে সিস্টেমের স্বাস্থ্যের জন্য ভালো। -
registerObserver():Sessionক্লাসে যোগ করা হয়েছে, এই পদ্ধতিটি Session-এ অ্যাক্সেস থাকা যেকোনো ব্যক্তিকে একজন পর্যবেক্ষক নিবন্ধন করতে দেয়। UI সেশন খোলার পরে যদি পর্যবেক্ষক নিবন্ধিত হন, তাহলে তাদের ক্যাশ করাAdContainerInfoঅবিলম্বে পাঠানো হবে। যদি সেশন খোলার আগে নিবন্ধিত হন, তাহলে সেশন খোলার সময় তাদেরAdContainerInfoপাঠানো হবে। -
AdContainerInfo: গেটার সহ একটি ক্লাস যা পর্যবেক্ষককে উপরের ক্যাপাবিলিটি বিভাগে তালিকাভুক্ত ডেটা টাইপের জন্য কেবল পঠনযোগ্য বিজ্ঞাপন কন্টেইনার তথ্য পেতে সক্ষম করে। এই গেটারগুলির রিটার্ন মানগুলি, যেখানেই সম্ভব,Viewএবং এর সাবক্লাসে বিদ্যমান গেটারগুলির পার্সেলযোগ্য রিটার্ন মানের সাথে মিলবে। যদি বিজ্ঞাপন কন্টেইনারটি Jetpack Compose ব্যবহার করে তৈরি করা হয়, তবে এটি কন্টেইনারের শব্দার্থিক বৈশিষ্ট্যগুলি প্রকাশ করে। এই ক্লাসটি দর্শনযোগ্যতার সাথে সম্পর্কিত MRAID এবং OMID ইভেন্টগুলি গণনা করতে ব্যবহার করা যেতে পারে। -
SessionObserverotifyAdContainerChanged(): যখনই দৃশ্যমানতা পরিবর্তন হয় তখন পর্যবেক্ষককে অবহিত করার জন্য ব্যবহৃত হয়। এটি একটিAdContainerInfoঅবজেক্ট পাস করে। যখনই Capabilities বিভাগে তালিকাভুক্ত ডেটা টাইপগুলিকে প্রভাবিত করে এমন ইভেন্ট সনাক্ত করা হয় তখন এটি বলা হয়। দ্রষ্টব্য: এই পদ্ধতিটি Session-এর পদ্ধতিগুলির পাশাপাশি কল করা যেতে পারে। উদাহরণস্বরূপ,Session.notifyResized()কে SDK কে বিজ্ঞাপনের আকার পরিবর্তন করার অনুরোধ করার জন্য কল করা হয়, এবং যখন এটি ঘটে তখনSessionObserver.notifyAdContainerChanged()কেও কল করা হয়। -
SessionObserverotifySessionClosed(): পর্যবেক্ষককে অবহিত করে যে সেশনটি বন্ধ হয়ে গেছে।
ভবিষ্যতের বর্ধিতকরণ
অ্যাপ্লিকেশন প্রক্রিয়ায় চলমান যেকোনো কোড, যার মধ্যে privacysandbox.ui.client লাইব্রেরির কোডও অন্তর্ভুক্ত, অ্যাপ্লিকেশনটি যদি আপোস করা হয় তবে তা পরিবর্তন করা যেতে পারে। অতএব, অ্যাপ্লিকেশন প্রক্রিয়ায় চলমান যেকোনো সিগন্যাল সংগ্রহের যুক্তি অ্যাপ্লিকেশন কোড দ্বারা হস্তক্ষেপের ঝুঁকিতে থাকে। এটি অ্যাপ্লিকেশন প্রক্রিয়ায় চলমান প্রাইভেসি স্যান্ডবক্সের উপলব্ধতার আগে স্থাপন করা SDK কোডের ক্ষেত্রেও প্রযোজ্য। ফলস্বরূপ, UI লাইব্রেরি দ্বারা সিগন্যাল সংগ্রহ নিরাপত্তা পরিস্থিতিকে আরও খারাপ করে না।
অতিরিক্তভাবে, SDK রানটাইমের কোডটি setTrustedPresentationCallback নামক একটি প্ল্যাটফর্ম API ব্যবহার করতে পারে যা বিজ্ঞাপন UI উপস্থাপনা সম্পর্কে ফ্রেমওয়ার্ক থেকে আরও শক্তিশালী গ্যারান্টি দিতে পারে। setTrustedPresentationCallback সারফেস স্তরে কাজ করে এবং উপস্থাপনার জন্য ন্যূনতম থ্রেশহোল্ড নির্দিষ্ট করে বিজ্ঞাপন UI ধারণকারী সারফেস সম্পর্কে দাবি করতে সাহায্য করতে পারে, যেমন দৃশ্যমান পিক্সেলের শতাংশ, স্ক্রিনে সময় বা স্কেল। এই ডেটা উপরে ব্যাখ্যা করা UI ক্লায়েন্ট লাইব্রেরি দ্বারা প্রদত্ত দর্শনযোগ্যতা ডেটার সাথে পরীক্ষা করা যেতে পারে। যেহেতু ফ্রেমওয়ার্ক-প্রদত্ত ডেটা আরও নির্ভরযোগ্য, তাই UI লাইব্রেরির যে কোনও ইভেন্ট যার ডেটা ফ্রেমওয়ার্কের ডেটার সাথে সামঞ্জস্যপূর্ণ নয় তা বাতিল করা যেতে পারে। উদাহরণস্বরূপ, যদি setTrustedPresentationCallback এ প্রদত্ত শ্রোতাকে একটি বিজ্ঞপ্তি দিয়ে ডাকা হয় যে বিজ্ঞাপন UI এর কোনও পিক্সেল স্ক্রিনে দেখানো হচ্ছে না এবং ক্লায়েন্ট UI লাইব্রেরি স্ক্রিনে শূন্য সংখ্যক পিক্সেল দেখায়, তাহলে পরবর্তীটির ডেটা বাতিল করা যেতে পারে।
খোলা প্রশ্ন
- এই ব্যাখ্যাকারীতে উল্লেখ করা হয়নি এমন কোন দৃশ্যমানতা সংকেতগুলিতে আপনি আগ্রহী?
- বর্তমান প্রস্তাবনা হলো, UI-তে প্রাসঙ্গিক পরিবর্তনের ক্ষেত্রে, দর্শনযোগ্যতা প্রতি ২০০ মিলিসেকেন্ডের কম ঘন ঘন আপডেট করা। এই ফ্রিকোয়েন্সি কি আপনার কাছে গ্রহণযোগ্য? যদি না হয়, তাহলে আপনি কোন ফ্রিকোয়েন্সি পছন্দ করবেন?
- আপনি কি
setTrustedPresentationCallbackথেকে তথ্য নিজে বিশ্লেষণ করতে পছন্দ করেন, নাকি সরবরাহকারী UI লাইব্রেরি ক্লায়েন্ট UI লাইব্রেরি থেকে ডেটা বাদ দিতে পছন্দ করেন, যখন এটিsetTrustedPresentationCallbackডেটার সাথে মেলে না? - আপনি কীভাবে দৃশ্যমানতা সংকেত ব্যবহার করেন? এই প্রশ্নগুলির উত্তর দেয় এমন প্রতিক্রিয়া জমা দিয়ে আপনার ব্যবহারের ক্ষেত্রে আমাদের বুঝতে সাহায্য করুন।