لا يمكن لحِزم SDK لعرض الإعلانات في "وقت تشغيل SDK" الوصول إلى العرض الهرمي للعرض الهرمي للناشر.
بدلاً من ذلك، تحتوي حِزم SDK في "بيئة التشغيل" على ملفات شخصية خاصة بها. لا يمكن لحزمة تطوير البرامج (SDK) استخدام نفس
عرض واجهات برمجة التطبيقات أثناء استخدامها خارج وقت تشغيل حزمة تطوير البرامج (SDK) لتحديد ما إذا كان الإعلان
للمستخدم، لأن عرض الإعلان غير مرتبط بإعدادات
نافذة. يشمل ذلك واجهات برمجة تطبيقات Android View، مثل getLocationOnScreen
getLocationInWindow
أو getVisibility
، التي لا تعرض القيمة المتوقعة
القيم.
إنّ إتاحة قياس إمكانية عرض الإعلانات هي أحد المتطلبات الأساسية لوقت تشغيل حزمة تطوير البرامج (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 تسجيل مراقب واحد أو أكثر لجلسة واجهة المستخدم. سيتلقى المراقب معلومات عن إمكانية العرض كلما كانت الأحداث ذات الصلة تعدِّل أنواع البيانات في قسم الإمكانات. يمكن لحِزم تطوير البرامج (SDK) لقياس الأداء في وقت تشغيل حِزم SDK (عمليات تنفيذ OMID وMRAID) إرفاق هذا المراقب بجلسة واجهة المستخدم، حتى يمكن إرسال هذه المعلومات إليه مباشرةً. يمكن لشركاء القياس دمج المعلومات التي يتم الحصول عليها من مكتبات UI مع بيانات عن المحتوى المتاح حاليًا (مثل عند استخدام نصوص برمجية لقياس الأداء يتم إدراجها في تصميم الإعلان) لإنشاء أحداث قياس إمكانية الرؤية باستخدام JavaScript .
تستمع مكتبة العملاء إلى التغييرات في واجهة مستخدم الإعلان من خلال أدوات معالجة الأحداث، مثل
باسم ViewTreeObserver
. حينما يحدد أن واجهة مستخدم الإعلان قد تغيرت في
قد تؤثر في قياس إمكانية العرض، تتحقّق مكتبة العملاء من الحالات التي
تم إرسال الإشعار الأخير إلى المراقب. إذا كان آخر تعديل أكبر
من وقت الاستجابة المسموح به (يمكن ضبطه من خلال حزمة تطوير البرامج (SDK) ليصل إلى 200 ملي ثانية بحد أدنى على
الأجهزة الجوّالة)، يتم إنشاء عنصر AdContainerInfo
جديد ويتم إرسال إشعار
إلى المُراقب. إنّ هذا النموذج المستند إلى الأحداث أفضل لسلامة النظام.
مقارنةً باستطلاع الرأي الذي تم إجراؤه من خلال معظم عمليات تنفيذ OMID على Android اليوم.
واجهة برمجة التطبيقات
ستتم إضافة ما يلي إلى مكتبة privacysandbox.ui.core:
-
SessionObserver
: يتم تنفيذه عادةً من خلال حزمة تطوير البرامج (SDK) لقياس الأداء، ويتم إرفاقه بالجلسة التي تعرضها حزمة SDK من خلال privacysandbox.ui. هذا النمط على تطوير حزمة تطوير البرامج (SDK) للقياس من أجل تفعيل فئات معيّنة إشارات إمكانية العرض وهذا بدوره يؤدي إلى تمكين مكتبة برامج واجهة المستخدم من جمع الإشارات التي يهتم بها المراقب، وهذا أفضل بالنسبة إلى النظام الصحة بشكل عام. registerObserver()
: تمت الإضافة إلى الفئةSession
، وتتيح هذه الطريقة لأي شخص لديه حق الوصول إلى الجلسة لتسجيل مراقب. إذا تم تسجيل المُراقب بعد فتح جلسة واجهة المستخدم، سيتم إرسالAdContainerInfo
المخزّنة مؤقتًا إليه على الفور. في حال التسجيل قبل فتح الجلسة، سيتم إرسالهاAdContainerInfo
عند فتح الجلسة.AdContainerInfo
: فئة تتضمّن طرقًا للحصول على البيانات تتيح للمراقِب قراءة معلومات حاوية الإعلانات للقراءة فقط لأنواع البيانات المدرَجة في القسم الإمكانات أعلاه. وستتطابق قيم العرض من وظائف الحصول هذه ، كلما أمكن ذلك، مع قيم العرض القابلة للتقسيم من وظائف الحصول الحالية فيView
وفئاتها الفرعية. في حال إنشاء حاوية الإعلان باستخدام Jetpack Compose، سيؤدي ذلك إلى عرض الخصائص الدلالية للحاوية. يمكن استخدام هذه الفئة لاحتساب أحداث MRAID وOMID ذات الصلة بإمكانية العرض.SessionObserverotifyAdContainerChanged()
: يُستخدَم هذا الحقل لإشعار المراقب كلما تغيرت إمكانية العرض. يمرر كائنAdContainerInfo
. هذا هو يتم استدعاؤها كلما تم اكتشاف أحداث تؤثر في أنواع البيانات المدرجة في الإمكانات. ملاحظة: قد يتمّ استدعاء هذه الطريقة بالإضافة إلى طُرق on Session. على سبيل المثال، يتمّ استدعاءSession.notifyResized()
لطلب حزمة SDK لتغيير حجم الإعلان، ويتمّ استدعاءSessionObserver.notifyAdContainerChanged()
أيضًا عند حدوث ذلك.SessionObserverotifySessionClosed()
: لإعلام المراقِب بأنّ تم إغلاق الجلسة.
التحسينات المستقبلية
يمكن تعديل أي رمز برمجي يتم تشغيله في عملية تطبيق التطبيق، بما في ذلك الرمز البرمجي من مكتبة privacysandbox.ui.client، في حال تم الكشف عن ثغرة أمنية في التطبيق. ولذلك، فإنّ أي منطق لجمع الإشارات يتم تشغيله في التطبيق تكون العملية عرضة للتلاعب بكود التطبيق. وينطبق ذلك أيضًا على رمز حزمة SDK الذي تم برمجته قبل توفّر "مبادرة حماية الخصوصية" والذي يتم تشغيله في عملية إرسال التطبيق. وبالتالي، لا يؤدي جمع الإشارات من خلال مكتبة واجهة المستخدم إلى تفاقم الوضع الأمني.
بالإضافة إلى ذلك، يمكن للرمز البرمجي في وقت تشغيل SDK استخدام واجهة برمجة تطبيقات لنظام أساسي تُسمى
setTrustedPresentationCallback
التي يمكن أن توفر له ضمانات أقوى من
إطار العمل الخاص بالعرض التقديمي لواجهة مستخدم الإعلان. setTrustedPresentationCallback
يعمل على مستوى المساحة، ويمكن أن يساعد في تقديم تأكيدات حول المساحة
التي تحتوي على واجهة مستخدم الإعلان من خلال تحديد الحد الأدنى من الحدود الدنيا للعرض، مثل
النسبة المئوية للّقطات المرئية أو الوقت الذي يظهر فيه الإعلان على الشاشة أو نسبة العرض إلى الارتفاع. يمكن أن تكون هذه البيانات
تم التحقق منه وفقًا لبيانات إمكانية العرض المقدّمة من مكتبة عملاء واجهة المستخدم،
أعلاه. وبما أنّ البيانات المقدَّمة من إطار العمل أكثر موثوقية، يمكن تجاهل أي أحداث من مكتبة واجهة المستخدم التي لا تتوافق بياناتها مع بيانات إطار العمل. على سبيل المثال، إذا قدم المستمع
تم استدعاء setTrustedPresentationCallback
مع إشعار يفيد بعدم توفُّر وحدات بكسل.
من واجهة مستخدم الإعلان على الشاشة، بينما تعرض مكتبة واجهة مستخدم العميل
عدد وحدات البكسل على الشاشة بقيمة غير صفرية، فيمكن تجاهل البيانات الخاصة بالإعلانات الأخيرة.
الأسئلة المفتوحة
ندعوك إلى الاطّلاع على الملاحظات بشأن النقاط التالية:
- ما هي إشارات مدى الرؤية التي تهمّك والتي لم يتم ذكرها في هذا الشرح؟
- الاقتراح الحالي هو تعديل إمكانية العرض بمعدل لا يقل عن كل. 200 مللي ثانية، بشرط أن يكون هناك تغيير ذي صلة في واجهة المستخدم. هل هذا المعدّل المقبول بالنسبة إليك؟ إذا لم يكن الأمر كذلك، ما هو معدّل التكرار الذي تفضّله؟
- هل تفضّل تحليل المعلومات من
setTrustedPresentationCallback
بنفسك، أو أن تُسقط مكتبة واجهة مستخدِم مقدّم الخدمة البيانات من مكتبة واجهة مستخدِم العميل عندما لا تتطابق مع بياناتsetTrustedPresentationCallback
؟ - كيف تستخدِم إشارات إمكانية العرض؟ يُرجى مساعدتنا في فهم حالات الاستخدام من خلال إرسال ملاحظات تجيب عن هذه الأسئلة.