SDK রানটাইমে বিজ্ঞাপন SDKগুলি প্রকাশকের ভিউ হায়ারার্কি অ্যাক্সেস করতে সক্ষম নয়৷ পরিবর্তে, রানটাইমে SDK-এর নিজস্ব মতামত রয়েছে। বিজ্ঞাপনটি ব্যবহারকারীর কাছে দৃশ্যমান কিনা তা নির্ধারণ করতে SDK রানটাইমের বাইরে যেভাবে ব্যবহার করে সেই একই ভিউ API ব্যবহার করতে পারে না, কারণ বিজ্ঞাপনের দৃশ্যটি অ্যাপ্লিকেশনের উইন্ডোতে সংযুক্ত নয়। এর মধ্যে Android View API যেমন getLocationOnScreen
, getLocationInWindow
, বা getVisibility
অন্তর্ভুক্ত রয়েছে, যা প্রত্যাশিত মান ফেরত দেয় না।
বিজ্ঞাপন দর্শনযোগ্যতা পরিমাপ সমর্থন একটি মূল 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 উপস্থাপনা কীভাবে কাজ করে তার উপর তৈরি করে। SDK কে UI সেশনের এক বা একাধিক পর্যবেক্ষক নিবন্ধনের অনুমতি দেওয়ার জন্য আমরা UI লাইব্রেরিগুলিকে প্রসারিত করব৷ পর্যবেক্ষক দৃশ্যমানতার তথ্য পাবেন যখনই প্রাসঙ্গিক ইভেন্টগুলি যা সক্ষমতা বিভাগে ডেটা প্রকারগুলিকে পরিবর্তন করে সনাক্ত করা হয়। SDK রানটাইমে পরিমাপ SDKগুলি ( OMID এবং MRAID বাস্তবায়ন) এই পর্যবেক্ষককে UI সেশনের সাথে সংযুক্ত করতে পারে, যাতে এই তথ্য সরাসরি তাদের কাছে পাঠানো যায়৷ পরিমাপ অংশীদাররা জাভাস্ক্রিপ্ট দর্শনযোগ্যতা ইভেন্টগুলি তৈরি করতে UI লাইব্রেরি থেকে প্রাপ্ত তথ্য ইতিমধ্যে উপলব্ধ সামগ্রী সম্পর্কে ডেটার সাথে একত্রিত করতে পারে (যেমন বিজ্ঞাপন ক্রিয়েটিভে ইনজেকশন করা পরিমাপ স্ক্রিপ্ট ব্যবহার করার সময়)।
ক্লায়েন্ট লাইব্রেরি ViewTreeObserver
এর মতো ইভেন্ট শ্রোতাদের মাধ্যমে বিজ্ঞাপন UI-তে পরিবর্তনগুলি শোনে। যখনই এটি নির্ধারণ করে যে বিজ্ঞাপন UI এমনভাবে পরিবর্তিত হয়েছে যা দর্শনযোগ্যতা পরিমাপকে প্রভাবিত করতে পারে, ক্লায়েন্ট লাইব্রেরি পর্যবেক্ষকের কাছে শেষ বিজ্ঞপ্তি কখন পাঠানো হয়েছিল তা পরীক্ষা করে। যদি শেষ আপডেটটি অনুমোদিত বিলম্বের চেয়ে বেশি হয় (SDK দ্বারা কনফিগার করা যায়, মোবাইলে সর্বনিম্ন 200ms পর্যন্ত), একটি নতুন AdContainerInfo
অবজেক্ট তৈরি করা হয় এবং পর্যবেক্ষকের কাছে একটি বিজ্ঞপ্তি পাঠানো হয়। এই ইভেন্ট-ভিত্তিক মডেলটি আজকে অ্যান্ড্রয়েডে বেশিরভাগ OMID বাস্তবায়ন দ্বারা করা ভোটের চেয়ে সিস্টেমের স্বাস্থ্যের জন্য ভাল।
API
নিম্নলিখিতগুলি privacysandbox.ui.core লাইব্রেরিতে যোগ করা হবে:
-
SessionObserver
: সাধারণত পরিমাপ SDK দ্বারা প্রয়োগ করা হয়, privacysandbox.ui এর মাধ্যমে SDK দ্বারা ফেরত সেশনের সাথে সংযুক্ত। এই ইন্টারফেসটি পরিমাপ SDK কে কিছু নির্দিষ্ট বিভাগের দর্শনযোগ্যতা সংকেতগুলিতে অপ্ট-ইন করতে সক্ষম করবে৷ এটি পরিবর্তে, UI ক্লায়েন্ট লাইব্রেরীকে শুধুমাত্র পর্যবেক্ষকের আগ্রহের সংকেত সংগ্রহ করতে সক্ষম করে, যা সামগ্রিকভাবে সিস্টেমের স্বাস্থ্যের জন্য ভাল। -
registerObserver()
:Session
ক্লাসে যোগ করা হয়েছে, এই পদ্ধতিটি সেশনে অ্যাক্সেস আছে এমন যে কেউ একজন পর্যবেক্ষক নিবন্ধন করতে দেয়। UI অধিবেশন খোলার পর পর্যবেক্ষক নিবন্ধিত হলে, তাদের ক্যাশ করাAdContainerInfo
এখনই পাঠানো হবে। অধিবেশন খোলার আগে নিবন্ধিত হলে, সেশন খোলার পরে তাদেরAdContainerInfo
পাঠানো হবে। -
AdContainerInfo
: গেটার সহ একটি ক্লাস যা পর্যবেক্ষককে উপরের ক্যাপাবিলাইট বিভাগে তালিকাভুক্ত ডেটা প্রকারের জন্য শুধুমাত্র-পঠনযোগ্য বিজ্ঞাপন কন্টেইনার তথ্য পেতে সক্ষম করে। এই গেটারদের থেকে রিটার্ন মানগুলি, যেখানেই সম্ভব,View
এবং এর সাবক্লাসে বিদ্যমান গেটারদের থেকে পার্সেলযোগ্য রিটার্ন মানগুলির সাথে মিলিত হবে। যদি জেটপ্যাক কম্পোজ ব্যবহার করে বিজ্ঞাপন কন্টেইনার তৈরি করা হয়, তাহলে এটি কন্টেইনারের শব্দার্থিক বৈশিষ্ট্যগুলিকে প্রকাশ করে। এই শ্রেণীটি দৃশ্যমানতার সাথে সম্পর্কিত MRAID এবং OMID ইভেন্ট গণনা করতে ব্যবহার করা যেতে পারে। -
SessionObserverotifyAdContainerChanged()
: যখনই দর্শনযোগ্যতা পরিবর্তন হয় তখন পর্যবেক্ষককে অবহিত করতে ব্যবহৃত হয়। এটি একটিAdContainerInfo
অবজেক্ট পাস করে। এটি বলা হয় যখনই ইভেন্টগুলি সনাক্ত করা হয় যা সক্ষমতা বিভাগে তালিকাভুক্ত ডেটা প্রকারগুলিকে প্রভাবিত করে। দ্রষ্টব্য: এই পদ্ধতিটি সেশনের পদ্ধতি ছাড়াও বলা যেতে পারে। উদাহরণ স্বরূপ,Session.notifyResized()
কে SDK-কে বিজ্ঞাপনের আকার পরিবর্তন করার অনুরোধ জানানো হয় এবং যখন এটি ঘটে তখনSessionObserver.notifyAdContainerChanged()
কেও ডাকা হয়। -
SessionObserverotifySessionClosed()
: পর্যবেক্ষককে অবহিত করে যে সেশনটি বন্ধ করা হয়েছে।
ভবিষ্যতের উন্নতি
privacysandbox.ui.client লাইব্রেরির কোড সহ অ্যাপ্লিকেশন প্রক্রিয়ায় চলমান যেকোন কোড, যদি অ্যাপ্লিকেশনটি আপস করা হয় তবে সংশোধন করা যেতে পারে। অতএব, যেকোন সংকেত সংগ্রহের যুক্তি যা অ্যাপ্লিকেশন প্রক্রিয়ায় চলে তা অ্যাপ্লিকেশন কোড দ্বারা টেম্পারিং প্রবণ। এটি আবেদন প্রক্রিয়া চলাকালীন গোপনীয়তা স্যান্ডবক্সের উপলব্ধতার পূর্বে স্থাপন করা SDK কোডের ক্ষেত্রেও প্রযোজ্য। ফলস্বরূপ, UI লাইব্রেরি দ্বারা সংকেত সংগ্রহ নিরাপত্তা পরিস্থিতিকে আরও খারাপ করে না।
উপরন্তু, SDK রানটাইমে কোড সেট setTrustedPresentationCallback
নামে একটি প্ল্যাটফর্ম API ব্যবহার করতে পারে যা বিজ্ঞাপন UI উপস্থাপনা সম্পর্কে ফ্রেমওয়ার্ক থেকে আরও শক্তিশালী গ্যারান্টি দিতে পারে। setTrustedPresentationCallback
সারফেস স্তরে কাজ করে, এবং উপস্থাপনার জন্য ন্যূনতম থ্রেশহোল্ড নির্দিষ্ট করে বিজ্ঞাপন UI ধারণকারী সারফেস সম্পর্কে দাবি করতে সাহায্য করতে পারে, যেমন পিক্সেল দৃশ্যমান শতাংশ, স্ক্রিনে সময় বা স্কেল। এই ডেটা UI ক্লায়েন্ট লাইব্রেরি দ্বারা প্রদত্ত দর্শনযোগ্যতা ডেটার বিপরীতে পরীক্ষা করা যেতে পারে, উপরে ব্যাখ্যা করা হয়েছে৷ যেহেতু ফ্রেমওয়ার্ক-প্রদত্ত ডেটা আরও নির্ভরযোগ্য, তাই UI লাইব্রেরির যেকোনো ইভেন্ট যার ডেটা ফ্রেমওয়ার্কের ডেটার সাথে একমত নয় তা বাতিল করা যেতে পারে। উদাহরণ স্বরূপ, যদি setTrustedPresentationCallback
এ প্রদত্ত শ্রোতাকে একটি বিজ্ঞপ্তি দিয়ে আহ্বান করা হয় যে বিজ্ঞাপন UI-এর কোনো পিক্সেল স্ক্রিনে দেখানো হচ্ছে না এবং ক্লায়েন্ট UI লাইব্রেরি স্ক্রিনে একটি শূন্য সংখ্যক পিক্সেল দেখায়, তাহলে পরবর্তী ডেটা হতে পারে বাতিল
খোলা প্রশ্ন
- এই ব্যাখ্যাকারীতে উল্লেখ করা হয়নি এমন কোন দর্শনযোগ্যতার সংকেতগুলিতে আপনি আগ্রহী?
- বর্তমান প্রস্তাবটি হল প্রতি 200 মিলিসেকেন্ডের চেয়ে কম ঘন ঘন দর্শনযোগ্যতা আপডেট করা, যদি UI-তে একটি প্রাসঙ্গিক পরিবর্তন থাকে। এই ফ্রিকোয়েন্সি আপনার কাছে গ্রহণযোগ্য? যদি না হয়, আপনি কোন ফ্রিকোয়েন্সি পছন্দ করবেন?
- আপনি কি
setTrustedPresentationCallback
থেকে তথ্য বিশ্লেষণ করতে পছন্দ করেন, নাকি প্রদানকারী UI লাইব্রেরির জন্য ক্লায়েন্ট UI লাইব্রেরি থেকে ডেটা ড্রপ করার জন্য, যখন এটিsetTrustedPresentationCallback
ডেটার সাথে মেলে না? - আপনি কিভাবে দর্শনযোগ্যতা সংকেত ব্যবহার করবেন? এই প্রশ্নের উত্তর দেয় এমন প্রতিক্রিয়া ফাইল করার মাধ্যমে আপনার ব্যবহারের ক্ষেত্রে আমাদের বুঝতে সাহায্য করুন৷