الإعلانات المدمجة مع المحتوى على Android

يتيح شكل "الإعلانات المدمجة مع المحتوى" للناشر تخصيص إعلان يتم عرضه للمستخدم. بعد جلب إعلان من حزمة تطوير البرامج (SDK)، يمكن للناشرين تغيير تصميم الإعلان ومظهره ليتوافق بشكل أفضل مع واجهة مستخدم التطبيق، وذلك من خلال إضافة فلتر ألوان وتغيير الخطوط وإضافة تراكبات مخصّصة. لتحسين أداء "الإعلانات المدمجة مع المحتوى" أو تجربة المستخدمين، يضع الناشرون غالبًا حدودًا للعرض أو ينقلون تشغيل الفيديو إلى حزمة تطوير البرامج. أخيرًا، يمكن للناشرين تخصيص أدوات الاستماع إلى النقرات على الإعلانات لتتبُّع أحداث إضافية، مثل التمرير السريع للأعلى.

يتطلّب شكل "الإعلانات المدمجة مع المحتوى" مستوى أعلى من الثقة في الناشر مقارنةً بالمستوى المطلوب لعرض أشكال الإعلانات الأخرى. تهدف حِزم SDK عادةً إلى رصد انتهاكات السياسات والتأكّد من أنّ المحتوى الإعلاني المقدَّم للناشر قد تم عرضه للمستخدم.

يتم توفير إمكانية عرض الإعلانات الصورية في "وقت تشغيل حزمة SDK" من خلال واجهة برمجة التطبيقات SurfaceControlViewHost. يتيح ذلك لحزمة SDK عرض عناصر واجهة المستخدم من عملية "وقت تشغيل SDK" بدون أن يتم التلاعب بها من خلال تطبيق العميل. استخدِم أوضاع SurfaceView Z أعلاه أو Z أدناه لتحديد ما إذا كان السطح الذي يتم عرض واجهة مستخدم حزمة SDK عليه أعلى نافذة تطبيق العميل أو أسفلها. عند عرض إعلان باستخدام وضع Z أعلاه، تتلقّى حزمة SDK القيمة MotionEvents من تفاعل المستخدم، ولكن لا تظهر طرق العرض الخاصة بتطبيق العميل فوق الإعلان. عند عرض إعلان في وضع Z below، يعرض التطبيق طرق العرض الخاصة به فوق الإعلان، ولكن MotionEvents من تفاعل المستخدم مع الإعلان ينتقل إلى التطبيق، وليس إلى حزمة تطوير البرامج (SDK).

يمكن أن تستخدم حزمة تطوير البرامج (SDK) والناشر مكتبات Jetpack privacysandbox.ui لإنشاء جلسة واجهة مستخدم والحفاظ عليها.

حاوية الإعلانات التي يملكها التطبيق

لقد أنشأنا نموذجًا أوليًا يتيح لحزمة SDK امتلاك جميع طرق العرض التي تتضمّن إعلانًا مدمجًا مع المحتوى (بما في ذلك التراكبات في التطبيق)، وتبيّن لنا أنّه على الرغم من أنّ ذلك ممكن، إلا أنّه يفرض بعض القيود على واجهة المستخدم ويزيد من تعقيد عملية الدمج مع حزمة SDK. ويتمثّل النهج الأكثر عملية في السماح للتطبيق بامتلاك معظم طرق العرض. سيظل بإمكان حزمة SDK اختيار عرض بعض عناصر واجهة المستخدم، مثل عرض الإعلان، باستخدام SandboxedSdkView من privacysandbox.ui. يوفّر هذا الأسلوب أكبر قدر من المرونة في كيفية توفير حالات الاستخدام الحالية والمستقبلية لشكل الإعلان هذا: باستخدام هذا الأسلوب، يمكن لمطوّر التطبيق نقل مكوّنات الإعلان وتصميمها حسب الحاجة، بينما تحتفظ حزمة SDK بملكية مشغّل الفيديو، إذا كان ذلك مفضّلاً، وتحتفظ بإمكانية الوصول إلى عناصر التحكّم في الوسائط.

مخطّط يوضّح كيفية انتقال البيانات بين الناشر وحزمة SDK
مخطّط التحكّم المقترَح في "الإعلانات المدمجة مع المحتوى"

إشعارات بشأن حالة الإعلان

تتضمّن حِزم تطوير البرامج (SDK) المختلفة خصائص مختلفة لمشاهدات الإعلانات من أجل رصد الاحتيال وانتهاكات السياسات. نريد توفير هذه الإمكانية بدون تحديد الخصائص التي يجب استخدامها أو أن نصبح نقطة الاختناق في عملية تغيير مجموعة الخصائص التي يتم البحث عنها في حزمة SDK. نقترح إنشاء تمثيل لحاوية الإعلان وطرق العرض التابعة لها باستخدام NativeAdContainerInfo. سيكون هذا العنصر قابلاً للتسلسل ويتضمّن طرقًا مختلفة للحصول على المعلومات التي تقتصر على حاوية الإعلان ومحتوياتها، حيث تكون هذه المعلومات تحافظ على الخصوصية ولا تتطلّب تكلفة عالية لاحتسابها. ستتمكّن حزمة SDK من الموافقة على فئات الإشارات المضمّنة في NativeAdContainerInfo. ستتلقّى حزمة SDK هذا العنصر كلّما تغيّرت حالة الإعلان بطرق ذات صلة بحزمة SDK، مثل الأحداث القابلة للفوترة، مثل مرّات ظهور الإعلان ونقرات المستخدمين.

بالإضافة إلى ذلك، سيتمكّن الناشر من إضافة علامات خاصة بالعرض (سلاسل) إلى كل عنصر فرعي تمت إضافته إلى NativeAdContainer، ويمكن استخدام هذه العلامات لإعلام حزمة تطوير البرامج (SDK) بمادة عرض الإعلان التي يتوافق معها كل عنصر فرعي.

عندما ينقر المستخدم على طرق العرض التي تملكها حزمة SDK، ستعيد مكتبة واجهة المستخدم توجيه MotionEvent مع الخصائص التي تم تحويلها إلى مساحة إحداثيات حزمة SDK إلى حزمة SDK، بالإضافة إلى MotionEvent الأصلية. في الإصدارات المستقبلية من Android، سنبحث في إضافة طرق تتيح لتطبيق العميل نقل تركيز اللمس لجميع إيماءات المستخدم على الأجزاء التي تملكها حزمة SDK من هذا الإعلان الأصلي ليتم التعامل معها من خلال حزمة SDK.

الإقرارات

ستتوفّر الشهادات التالية لحزمة تطوير البرامج (SDK) من أجل تقديم ضمانات أقوى بشأن عرض الإعلانات:

  1. شهادة سلامة الجهاز: استخدِم واجهات برمجة التطبيقات الخاصة بالمنصة، مثل Key Attestation، لتحديد سلامة الجهاز.
  2. معرّف حزمة APK: استخدِم واجهات برمجة التطبيقات SdkSandbox، مثل SdkSandboxController.getClientPackageName، وواجهات برمجة التطبيقات PackageManager، مثل requestChecksum، للتحقّق من معرّف حزمة APK.
  3. VerifiedMotionEvents: في الإصدارات المستقبلية من Android، نعمل على استكشاف إمكانية السماح لتطبيق العميل بنقل تركيز اللمس لجميع إيماءات المستخدم على الأجزاء التي تملكها حزمة SDK من هذا الإعلان الأصلي ليتم التعامل معها من خلال حزمة SDK. يمكن تحويل MotionEvents إلى VerifiedMotionEvents باستخدام واجهات برمجة تطبيقات النظام. يمكن أن يعرض حزمة SDK واجهة المستخدم الخاصة به استجابةً لتفاعل المستخدم إذا اختار ذلك.

الأسئلة المفتوحة

  1. هل من الأفضل أن تنشئ حزمة SDK السلسلة VerifiedMotionEvents بنفسها، أو أن تنشئها مكتبة واجهة المستخدم الخاصة بموفِّر الخدمة لحزمة SDK؟
  2. هل من الأفضل أن تتيح حزمة SDK للناشر امتلاك طرق العرض التي تتضمّن الفيديو، أو أن تمتلك حزمة SDK طرق العرض هذه بنفسها؟
  3. ما هي الخصائص التي تريد تضمينها في الكائن AppOwnedAdContainerInfo؟
  4. كم عدد الإعلانات أو مكوّنات الإعلانات التي تملكها حزمة SDK والتي تتوقّع عرضها في الوقت نفسه على الشاشة؟