تسهّل حِزم تطوير البرامج (SDK) لإعلانات الوسائط التفاعلية دمج إعلانات الوسائط المتعددة في مواقعك الإلكترونية وتطبيقاتك. يمكن لحِزم تطوير البرامج لإعلانات الوسائط التفاعلية طلب الإعلانات من أي خادم إعلانات متوافق مع VAST وإدارة تشغيل الإعلانات في تطبيقاتك. باستخدام حِزم تطوير البرامج (SDK) الخاصة بميزة "إدراج الإعلان الديناميكي" في "إعلانات الوسائط التفاعلية" (IMA DAI)، تقدّم التطبيقات طلب بث لإعلان وفيديو محتوى، سواء كان فيديو عند الطلب أو محتوى مباشرًا. بعد ذلك، تعرض حزمة SDK بث فيديو مدمجًا، ما يغنيك عن إدارة التبديل بين الفيديو الإعلاني وفيديو المحتوى داخل تطبيقك.
اختيار حلّ "الإعلانات الديناميكية داخل الفيديو" الذي يهمّك
Pod Serving DAI
يوضّح هذا الدليل كيفية تشغيل بث مباشر أو بث فيديو عند الطلب باستخدام حزمة IMA DAI SDK لنظام التشغيل tvOS مع مشغّل فيديو. لعرض أو اتّباع نموذج تكامل مكتمل، نزِّل تطبيق Pod Serving التجريبي (Obj C أو Swift).
نظرة عامة على عرض مجموعة الإعلانات المتسلسلة في IMA DAI
يتضمّن تنفيذ ميزة "عرض الإعلانات المتتالية" باستخدام حزمة تطوير البرامج للإعلانات الديناميكية المدرَجة من IMA على tvOS مكوّنَين رئيسيَّين:
StreamRequest: عنصر يحدّد طلب بث إلى خوادم Google الإعلانية. يجب أن يتم إنشاؤها باستخدامIMAPodStreamRequestأوIMAPodVODStreamRequestلتفعيل ميزة "عرض الإعلانات ضمن حزمة". تتطلّب كلتا الطريقتَين رمز شبكة، بينما تتطلّب الطريقةIMAPodStreamRequestأيضًا مفتاح أصول مخصّص. مفتاح واجهة برمجة التطبيقات هو اختياري.IMAStreamManager: عنصر يعالج التواصل بين بث الفيديو و"حزمة تطوير البرامج (SDK) للإعلانات الديناميكية أثناء عرض الفيديو" من "إعلانات الوسائط التفاعلية"، مثل إرسال طلبات ping للتتبّع وإعادة توجيه أحداث البث إلى الناشر.
المتطلبات الأساسية
قبل البدء، يجب توفّر ما يلي:
- الإصدار 13 من Xcode أو إصدار أحدث
- طريقة تثبيت "حزمة تطوير البرامج للإعلانات التفاعلية":
- Swift Package Manager (الخيار المفضّل)
- نسخة قابلة للتنزيل من حزمة تطوير البرامج للإعلانات التفاعلية لنظام التشغيل tvOS
- تطبيق tvOS تم إعداده مسبقًا باستخدام حزمة تطوير البرامج (SDK) الخاصة بميزة "IMA DAI" من "إعلانات الوسائط التفاعلية" لتشغيل بث الفيديو مع إعلانات "IMA DAI" إذا لم يكن لديك تطبيق من هذا النوع، ننصحك باستخدام tvOS DAI BasicExample كنقطة بداية. يحتوي BasicExample على قاعدة الرموز البرمجية المشار إليها في هذا الدليل. لمزيد من المعلومات حول كيفية تنفيذ حزمة تطوير البرامج (SDK) الخاصة بـ IMA DAI، يُرجى الاطّلاع على دليل البدء السريع.
إعداد متغيّرات عرض الإعلانات المتسلسلة
أجرِ جميع التغييرات على Pod Serving في ViewController.swift بلغة Swift أو ViewController.m بلغة Objective-C. تستخدم المقتطفات في هذا الدليل لغة Swift تلقائيًا. الخطوة الأولى هي تعديل المتغيّرات الثابتة.
أضِف ثوابت طلب بثّ مجموعة الإعلانات المتسلسلة التالية:
STREAM_URL(يُستخدم فقط في البث المباشر): عنوان URL للبث الذي يقدّمه معالج ملف البيان أو شريك خارجي يستخدم ميزة "عرض الإعلانات المتسلسلة". يجب أن يطلب منك إدخال معرّف البث الذي توفّره حزمة تطوير البرامج لإعلانات الوسائط التفاعلية (IMA) الخاصة بميزة "الإعلانات الديناميكية أثناء عرض الفيديو" (DAI)، وذلك قبل إرسال طلب. في هذه الحالة، يتضمّن عنوان URL للبث عنصرًا نائبًا، وهو"[[STREAMID]]"، والذي عليك استبداله بمعرّف بث الفيديو قبل إرسال الطلب.NETWORK_CODE: معرِّف الشبكة لحسابك على "إدارة إعلانات Google 360".CUSTOM_ASSET_KEY(يُستخدَم فقط مع أحداث البث المباشر): مفتاح العنصر المخصّص الذي يحدّد حدث "عرض الإعلانات المتسلسلة" في "إدارة إعلانات Google 360". يمكن لمنشئ ملف البيان أو شريك عرض الإعلانات في ملفات البود من جهة خارجية إنشاء هذا الملف.API_KEY(يُستخدم فقط لبث الأحداث المباشرة): مفتاح اختياري لواجهة برمجة التطبيقات يمكن أن يكون مطلوبًا لاسترداد معرّف بث من حزمة تطوير البرامج IMA DAI SDK.
غيِّر قسم المتغيرات في المثال ليتطابق مع ما يلي:
...
class ViewController:
UIViewController,
IMAAdsLoaderDelegate,
IMAStreamManagerDelegate,
AVPlayerViewControllerDelegate
{
static let streamUrl = ""
static let networkCode = ""
static let customAssetKey = ""
static let APIKey = ""
static let backupStreamURLString = ""
var adsLoader: IMAAdsLoader?
...
إنشاء طلب بث مباشر أو بث عند الطلب
عرض الإعلانات ضمن البث المباشر
عدِّل طريقة requestStream لإنشاء طلب بث مباشر في بودكاست من خلال إنشاء مثيل IMAPodStreamRequest.
...
func requestStream() {
guard let playerViewController = self.playerViewController else return
guard let adContainerView = self.adContainerView else return
guard let adsLoader = self.adsLoader else return
self.videoDisplay = IMAAVPlayerVideoDisplay(avPlayer: playerViewController.player)
adDisplayContainer = IMAAdDisplayContainer(
adContainer: adContainerView, viewController: self)
// Create a podserving stream request.
request = IMAPodStreamRequest(
networkCode: self.networkCode,
customAssetKey: self.customAssetKey,
adDisplayContainer: adDisplayContainer,
videoDisplay: self.videoDisplay,
userContext: nil)
adsLoader.requestStream(with: request)
}
...
عرض الإعلانات ضمن مجموعة في بث الفيديو عند الطلب
عدِّل الطريقة requestStream لإنشاء طلب بث حزمة فيديوهات عند الطلب من خلال إنشاء مثيل IMAPodVODStreamRequest.
...
func requestStream() {
guard let playerViewController = self.playerViewController else return
guard let adContainerView = self.adContainerView else return
guard let adsLoader = self.adsLoader else return
self.videoDisplay = IMAAVPlayerVideoDisplay(avPlayer: playerViewController.player)
adDisplayContainer = IMAAdDisplayContainer(
adContainer: adContainerView, viewController: self)
// Create a podserving stream request.
request = IMAPodVODStreamRequest(
networkCode: self.networkCode,
adDisplayContainer: adDisplayContainer,
videoDisplay: self.videoDisplay,
userContext: nil)
adsLoader.requestStream(with: request)
}
...
تعديل عنوان URL للبث وضبطه
عرض الإعلانات ضمن البث المباشر
عدِّل طرق IMAAdsLoaderDelegate باستخدام streamManager.streamId للحصول على معرّف مصدر البيانات. بعد ذلك، أدخِل معرّف مصدر البيانات في STREAM_URL، مع استبدال
"[[STREAMID]]". بعد إجراء هذا التغيير، اضبط عنوان URL الجديد لحدث البث باستخدام
videoDisplay.loadStream().
...
// MARK: - IMAAdsLoaderDelegate
func adsLoader(_ loader: IMAAdsLoader!, adsLoadedWith adsLoadedData: IMAAdsLoadedData!) {
let streamManager = adsLoadedData.streamManager
let streamId = streamManager.streamId
let urlString = streamUrl.replacingOccurrences(of: "[[STREAMID]]", with: streamId)
let loadedStreamUrl = URL(string:urlString)
self.videoDisplay.loadStream(loadedStreamUrl, subtitles:@[])
self.videoDisplay.play()
streamManager.delegate = self
streamManager.initialize(with: nil)
self.streamManager = streamManager
}
...
عرض الإعلانات ضمن مجموعة في بث الفيديو عند الطلب
عدِّل طرق IMAAdsLoaderDelegate باستخدام streamManager.streamId للحصول على معرّف مصدر البيانات. بعد ذلك، اطلب عنوان URL للبث من شريكك في تكنولوجيا الفيديو (VTP) واتّصِل بـ IMAStreamManager.loadThirdPartyStream() لكي تحمّل IMA عنوان URL للبث وأي ترجمات وشرح تم إرجاعهما من شريكك في تكنولوجيا الفيديو.
...
// MARK: - IMAAdsLoaderDelegate
func adsLoader(_ loader: IMAAdsLoader!, adsLoadedWith adsLoadedData: IMAAdsLoadedData!) {
let streamManager = adsLoadedData.streamManager
let streamId = streamManager.streamId
// 'vtpInterface' is a place holder for your own video technology partner
// (VTP) API calls.
let streamUrl = vtpInterface.requestStreamURL(streamID)
self.streamManager.loadThirdPartyStream(streamUrl, streamSubtitles:@[])
streamManager.delegate = self
streamManager.initialize(with: nil)
self.streamManager = streamManager
}
تنظيف مواد عرض IMA DAI
بعد الانتهاء بنجاح من طلب الإعلانات وعرضها في بث Pod
Serving باستخدام حزمة تطوير البرامج IMA DAI SDK، ننصحك بتنظيف أي موارد بعد
اكتمال جلسة Pod Serving. اتّصِل بالرقم IMAStreamManager.destroy() لإيقاف تشغيل البث مؤقتًا، وإيقاف جميع عمليات تتبُّع الإعلانات، وإصدار جميع مواد عرض البث التي تم تحميلها.
للاطّلاع على أمثلة أخرى على استخدام حزمة تطوير البرامج (SDK) لنظام التشغيل tvOS، يمكنك الرجوع إلى الأمثلة على GitHub.