يوضّح هذا الدليل كيفية تشغيل بث مباشر أو بث فيديو عند الطلب (VOD) باستخدام ميزة "عرض مجموعات إعلانية متسلسلة" في IMA DAI من خلال حزمة تطوير البرامج (SDK) الخاصة بـ IMA DAI لنظام التشغيل tvOS مع مشغّل الفيديو. لعرض نموذج دمج مكتمل أو اتّباعه، نزِّل نموذج تطبيق "عرض الإعلانات المجمّعة" (Obj C أو Swift).
نظرة عامة على عرض مجموعات إعلانية متسلسلة في IMA DAI
يتضمن تنفيذ ميزة "عرض الإعلانات في مجموعات" باستخدام حزمة تطوير البرامج (SDK) لتقنية IMA DAI لنظام التشغيل tvOS عنصرَين رئيسيَّين:
StreamRequest: عنصر يحدّد طلب بث إلى خوادم Google الإعلانية يجب إنشاؤها باستخدامIMAPodStreamRequestأوIMAPodVODStreamRequestلتفعيل ميزة "عرض الإعلانات في مجموعات". تتطلّب كلتا الطريقتَين رمز شبكة، وتتطلّبIMAPodStreamRequestأيضًا مفتاح مادة عرض مخصّص. يُعدّ مفتاح واجهة برمجة التطبيقات اختياريًا.
IMAStreamManager: عنصر يعالج الاتصال بين بث الفيديو وحزمة تطوير البرامج (SDK) لتقنية "إدراج الإعلان الديناميكي" في "إعلانات الوسائط التفاعلية" (IMA DAI)، مثل تنشيط إشعارات التتبّع و إعادة توجيه أحداث البث إلى الناشر.
المتطلبات الأساسية
قبل البدء، تحتاج إلى ما يلي:
- الإصدار 13 من Xcode أو إصدار أحدث
- طريقة تثبيت حزمة تطوير البرامج للإعلانات التفاعلية (IMA SDK):
- Swift Package Manager (مُفضَّل)
- نسخة قابلة للتنزيل من حزمة تطوير البرامج للإعلانات التفاعلية (IMA SDK) لنظام التشغيل tvOS
- تطبيق tvOS تم إعداده مسبقًا باستخدام حزمة تطوير البرامج (SDK) لتقنية IMA DAI لتشغيل فيديوهات تتضمّن إعلانات IMA DAI. إذا لم يكن لديك تطبيق من هذا النوع، ننصحك باستخدام tvOS DAI BasicExample كنقطة بداية. يحتوي BasicExample على قاعدة الرموز البرمجية المُشار إليها في هذا الدليل. لمزيد من المعلومات حول كيفية تنفيذ حزمة تطوير البرامج (SDK) لتقنية IMA DAI، يُرجى الاطّلاع على دليل البدء السريع.
إعداد متغيّرات "عرض الإعلانات المتعدّدة"
يجب إجراء جميع التغييرات المتعلّقة بعرض الإعلانات في مجموعات في ViewController.swift في
Swift أو ViewController.m في Objective-C. تستخدم المقتطفات في هذا الدليل
لغة Swift تلقائيًا. الخطوة الأولى هي تعديل
المتغيّرات الثابتة.
أضِف الثوابت التالية لطلب بث مجموعة إعلانات متسلسلة:
STREAM_URL(يُستخدَم فقط لأحداث البث المباشر): عنوان URL الخاص ببث الفيديو الذي يوفّره مُعدِّل ملفات البيان أو الشريك الخارجي الذي يستخدم ميزة "عرض الإعلانات في مجموعات". يجب أن يتطلب منك إدخال معرّف البث الذي توفّره حزمة تطوير البرامج (SDK) لتقنية IMA DAI قبل تقديم طلب. في هذه الحالة، يتضمّن عنوان URL للبث عنصرًا نائبًا،"[[STREAMID]]"، والذي تستبدله بمعرّف البث قبل تقديم طلب.-
NETWORK_CODE: رمز الشبكة لحسابك على "إدارة إعلانات Google 360" -
CUSTOM_ASSET_KEY(يُستخدَم فقط لأحداث البث المباشر): مفتاح مادة العرض المخصّصة الذي يحدّد حدث عرض مجموعة الإعلانات المتتالية في "مدير إعلانات Google 360". يمكن لمُعدِّل ملفات البيان أو شريك عرض مجموعات الإعلانات المتتالية التابع لجهة خارجية إنشاء هذا الملف. API_KEY(يُستخدَم فقط لأحداث البث المباشر): مفتاح واجهة برمجة تطبيقات اختياري يمكن أن يكون مطلوبًا لاسترداد معرّف بث من حزمة تطوير البرامج (SDK) في IMA DAI.
غيِّر قسم المتغيّرات في المثال ليتطابق مع ما يلي:
...
class ViewController:
UIViewController,
IMAAdsLoaderDelegate,
IMAStreamManagerDelegate,
AVPlayerViewControllerDelegate
{
static let streamUrl = ""
static let networkCode = ""
static let customAssetKey = ""
static let APIKey = ""
static let backupStreamURLString = ""
var adsLoader: IMAAdsLoader?
...
إنشاء طلب بث مباشر أو بث فيديو عند الطلب (VOD)
عرض مجموعة إعلانات البث المباشر
عدِّل طريقة 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() لكي يتم تحميل عنوان URL للبث وأي ترجمات يعرضها شريك تكنولوجيا الفيديو من خلال حزمة تطوير البرامج لإعلانات الوسائط التفاعلية (IMA).
...
// 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
عند الانتهاء بنجاح من طلب الإعلانات وعرضها في بث عرض الإعلانات المتعدّدة باستخدام حزمة تطوير البرامج (SDK) لتقنية IMA DAI، ننصحك بإزالة أي موارد بعد اكتمال جلسة عرض الإعلانات المتعدّدة. يمكنك استدعاء IMAStreamManager.destroy() لإيقاف تشغيل البث وإيقاف تتبُّع الإعلانات بالكامل وإصدار جميع مواد عرض البث التي تم تحميلها.
للاطّلاع على أمثلة أخرى على استخدام حزمة تطوير البرامج (SDK) لنظام التشغيل tvOS، يمكنك الاطّلاع على النماذج على GitHub.