توفّر مواصفات الإعلانات البينية في HLS طريقة مرنة لتحديد مواعيد الإعلانات وإدراجها في بث الفيديو أو الصوت. باستخدام طريقة العرض من جهة العميل، يتحكّم تطبيقك بشكل كامل في وقت طلب فواصل الإعلانات وتشغيلها من خلال إنشاء الفئة AVPlayerInterstitialEvent. لا يتطلّب هذا النهج علامات EXT-X-DATERANGE في بيانات وصف المحتوى. تتيح لك الإعلانات البينية من جهة العميل بتنسيق HLS إمكانية إدراج إعلانات بشكل ديناميكي في أي محتوى، بدون الحاجة إلى تعديل بيان البث أو ملفات الوسائط.
يتناول هذا الدليل عملية دمج "حزمة تطوير البرامج لإعلانات الوسائط التفاعلية" (IMA SDK) في تطبيق مشغّل فيديو ينشئ جلسة بث مباشر باستخدام ميزة "إدراج الإعلانات من جهة الخادم" (SGAI) ويجدول الإعلانات البينية من جهة العميل. لمزيد من المعلومات، راجِع مقالة ميزة "إدخال الإعلانات الديناميكية" من جهة الخادم.
المتطلبات الأساسية
قبل البدء، يجب أن يتوفّر لديك ما يلي:
مشروع Xcode جديد، باستخدام
Storyboardلواجهة المستخدم لمزيد من المعلومات، يُرجى الاطّلاع على إنشاء مشروع Xcode لتطبيق.Google IMA SDK لمزيد من المعلومات، يُرجى الاطّلاع على إعداد حزمة تطوير البرامج لإعلانات الوسائط التفاعلية (IMA) من أجل ميزة "الإعلانات الديناميكية أثناء البث".
المَعلمات التالية لطلب البث المباشر باستخدام "إدراج الإعلانات الديناميكي" (DAI):
NETWORK_CODE: رمز شبكة "مدير إعلانات Google".-
CUSTOM_ASSET_KEY: السلسلة المخصّصة التي تحدّد حدث البث المباشر باستخدام "إعلانات البث المباشر". يجب أن يتضمّن حدث البث المباشر نوع "إدخال الإعلانات الديناميكي" في بيان عرض "بود".
ضبط مخطط قصة
في ملف iPhone.storyboard، نفِّذ ما يلي:
- أنشِئ عنصر
UIViewكحاوية لمشغّل الفيديو وواجهة مستخدم الإعلان. - أنشئ سمة
adUIViewمن الفئةViewControllerللربط بالكائنUIView. - في العنصر
adUIView، أنشئUIButtonليعمل كزر تشغيل. - أنشئ موقع
playButtonمن الفئةViewControllerللربط بالكائنUIButtonووظيفةonPlayButtonTouchللتعامل مع نقرات المستخدم.
تهيئة أداة تحميل الإعلانات
في حدث viewDidLoad لوحدة التحكّم الرئيسية في العرض، اتّبِع الخطوات التالية:
- اضبط مشغّل فيديو باستخدام الفئتَين
AVPlayerوAVPlayerLayer. - إنشاء عناصر
IMAAdDisplayContainerوIMAAVPlayerVideoDisplayتحدّد حاوية عرض الإعلانadUIViewلحزمة تطوير البرامج IMA DAI SDK من أجل إدراج طرق العرض الفرعية لواجهة مستخدم الإعلان. يعمل عنصر عرض الفيديو كجسر بين منطق الإعلانات في حزمة IMA DAI SDK ونظام تشغيل AVFoundation، ويتتبّع تشغيل إعلانات الفيديو. - ابدأ بتهيئة عنصر
IMAAdsLoaderباستخدام إعدادات تشغيل الإعلانات وتوطين واجهة مستخدم الإعلانات.
يوضّح المثال التالي كيفية تهيئة أداة تحميل الإعلانات باستخدام عنصر IMASettings فارغ:
تقديم طلب بث
لطلب إعلانات لتدفق محتوى، أنشئ عنصر
IMAPodStreamRequest
وامرّره إلى مثيل
IMAAdsLoader. يمكنك اختياريًا ضبط السمة adTagParameters لتوفير خيارات "إعلانات الفيديو الديناميكية" ومعلَمات الاستهداف للبث.
يستدعي هذا المثال طريقة loadAdStream في الحدث viewDidAppear:
في تطبيقك المتاح على الإصدار العلني، استدعِ الدالة loadAdStream بعد أن يختار المستخدم بثًا مباشرًا للمحتوى.
التعامل مع أحداث تحميل البث
نفِّذ بروتوكول
IMAAdsLoaderDelegate
للتعامل مع نجاح طلب البث أو تعذُّره:
- عند النجاح، ستتلقّى عنصر
IMAAdsLoadedDataيحتوي علىIMAStreamManager. تخزِّن هذه السمة قيمةstreamManager.streamIdلجلسة "إعلانات البث المباشر" الحالية. - في حال حدوث خطأ، سجِّل الخطأ.
يتناول المثال التالي حدث تحميل البث ويسجّل حدث تعذُّر تحميل البث:
جدولة عمليات إدراج الإعلانات
لجدولة استراحة إعلانية، أنشئ عنصر
AVPlayerInterstitialEvent. اضبط السمة templateItems لعنصر الحدث على مصفوفة من عناصر AVPlayerItem، حيث يحتوي كل عنصر على عنوان URL لبيان حزمة الإعلانات.
لإنشاء عنوان URL لبيان حزمة إعلانات، اتّبِع مستند الطريقة: بيان حزمة إعلانات HLS.
لأغراض توضيحية، ينشئ المثال التالي سلسلة معرّف حزمة إعلانية باستخدام الوقت الحالي للبث المباشر للمحتوى. تعرض الدالة generatePodIdentifier معرّف الحاوية على شكل ad_break_id/mid-roll-{minute}.
في تطبيقك المباشر، استرجِع معرّف مجموعة الإعلانات من مصدر يوفّر قيمًا فريدة لكل فاصل إعلاني، تتم مزامنتها مع جميع مشاهدي البث المباشر.
يجدول المثال التالي فاصلًا إعلانيًا ليبدأ خلال الدقيقتَين التاليتَين بعد أن ينقر المستخدم على زر التشغيل:
تحسب الطريقة scheduleAdInsertion وقت بدء فاصل الإعلانات وتنشئ عنوان URL لبيان مجموعة الإعلانات. استخدِم عنوان URL هذا لإنشاء عنصر AVPlayerInterstitialEvent.
يمكنك اختياريًا استخدام AVPlayerInterstitialEvent.Restrictions struct لمنع المستخدم من تخطّي الإعلان أو ترجيعه أثناء تشغيله.
التعامل مع أحداث الإعلانات
للتعامل مع أحداث الإعلانات، عليك تنفيذ البروتوكول
IMAStreamManagerDelegate. يتيح لك هذا الأسلوب تتبُّع وقت بدء فواصل الإعلانات وانتهائها، والحصول على معلومات حول الإعلانات الفردية.
شغِّل تطبيقك. إذا نجحت العملية، يمكنك طلب إعلانات بينية وتشغيلها باستخدام بيان بث لخدمة Pod.