تسهّل حِزم تطوير البرامج (SDK) لإعلانات الوسائط التفاعلية دمج إعلانات الوسائط المتعددة في مواقعك الإلكترونية وتطبيقاتك. يمكن لحِزم تطوير البرامج لإعلانات الوسائط التفاعلية طلب الإعلانات من أي خادم إعلانات متوافق مع VAST وإدارة تشغيل الإعلانات في تطبيقاتك. باستخدام حِزم تطوير البرامج لإدراج الإعلانات الديناميكي في "إعلانات الوسائط التفاعلية"، تقدّم التطبيقات طلب بث لإعلان وفيديو محتوى، سواء كان فيديو عند الطلب أو محتوى مباشرًا. بعد ذلك، تعرض حزمة SDK بث فيديو مدمجًا، ما يغنيك عن إدارة التبديل بين الفيديو الإعلاني وفيديو المحتوى داخل تطبيقك.
اختيار حلّ "الإعلانات الديناميكية أثناء عرض الفيديو" الذي يهمّك
إدراج إعلان ديناميكي في حزمة
يوضّح هذا الدليل كيفية تشغيل بث مباشر أو بث فيديو عند الطلب باستخدام حزمة تطوير البرامج لإدراج الإعلان الديناميكي من "إعلانات الوسائط التفاعلية" على tvOS مع مشغّل فيديو. لعرض مثال على عملية دمج مكتملة أو اتّباعها، نزِّل تطبيق Pod Serving التجريبي (Obj C أو Swift).
نظرة عامة حول عرض "حزمة إعلانات" باستخدام ميزة "إدراج الإعلان الديناميكي" في "إعلانات الوسائط التفاعلية"
يتضمّن تنفيذ ميزة "عرض الإعلانات المتسلسلة" باستخدام حزمة تطوير البرامج IMA DAI SDK لنظام التشغيل tvOS مكوّنَين رئيسيَّين:
StreamRequest
: عنصر يحدّد طلب بث إلى خوادم Google الإعلانية. يجب أن يتم إنشاؤها باستخدامIMAPodStreamRequest
أوIMAPodVODStreamRequest
لتفعيل ميزة "عرض الإعلانات ضمن البودكاست". تتطلّب كلتا الطريقتَين رمز شبكة، بينما تتطلّب الطريقةIMAPodStreamRequest
أيضًا مفتاح أصول مخصّص. مفتاح واجهة برمجة التطبيقات هو اختياري.IMAStreamManager
: عنصر يعالج التواصل بين بث الفيديو و"حزمة تطوير البرامج (SDK) للإعلانات الديناميكية أثناء عرض الفيديو" من "إعلانات الوسائط التفاعلية"، مثل إرسال إشارات تتبُّع وإعادة توجيه أحداث البث إلى الناشر.
المتطلبات الأساسية
قبل البدء، يجب أن يتوفّر لديك ما يلي:
- الإصدار 13 من Xcode أو الإصدارات الأحدث
- CocoaPods (الخيار المفضّل) أو Swift Package Manager أو نسخة تم تنزيلها من حزمة تطوير البرامج لإدراج الإعلان الديناميكي في "إعلانات الوسائط التفاعلية" لنظام التشغيل tvOS
- تطبيق tvOS تم إعداده مسبقًا باستخدام حزمة تطوير البرامج لإعلانات الوسائط التفاعلية (DAI) من أجل تشغيل بث الفيديو مع إعلانات DAI. إذا لم يكن لديك تطبيق من هذا النوع، ننصحك باستخدام tvOS DAI BasicExample كنقطة بداية. يحتوي BasicExample على قاعدة الرموز البرمجية المشار إليها في هذا الدليل. لمزيد من المعلومات حول كيفية تنفيذ حزمة تطوير البرامج لإعلانات الوسائط التفاعلية (DAI) من IMA، يُرجى الاطّلاع على دليل البدء السريع.
إعداد متغيرات "عرض الإعلانات ضمن البودكاست"
يتم إجراء جميع التغييرات اللازمة لتفعيل ميزة Pod Serving في ViewController.swift
باستخدام Swift أو ViewController.m
باستخدام Objective-C. تستخدم المقتطفات في هذا الدليل لغة Swift تلقائيًا. الخطوة الأولى هي تعديل المتغيّرات الثابتة.
في ما يلي الثوابت الخاصة بطلبات بث حزمة الإعلانات التي يجب إضافتها:
STREAM_URL
(يُستخدم فقط في البث المباشر): عنوان URL لتدفق الفيديو المقدَّم من خلال أداة معالجة ملف البيان أو شريك خارجي يستخدم ميزة "عرض الإعلانات ضمن حزمة". يجب أن يطلب منك إدخال معرّف البث الذي توفّره حزمة تطوير البرامج لإعلانات الوسائط التفاعلية (IMA) الخاصة بميزة "الإعلانات الديناميكية أثناء البث"، وذلك قبل تقديم طلب. في هذه الحالة، يتضمّن عنوان URL للبث عنصرًا نائبًا،"[[STREAMID]]"
، يتم استبداله بمعرّف البث قبل إرسال الطلب.NETWORK_CODE
: رمز الشبكة لحسابك على "مدير إعلانات Google 360".CUSTOM_ASSET_KEY
(يُستخدَم فقط في أحداث البث المباشر): مفتاح العنصر المخصّص الذي يحدّد حدث "عرض الإعلانات المتسلسلة" في "مدير إعلانات Google 360". يمكن إنشاء هذا الملف من خلال أداة تعديل ملف البيان أو شريك عرض إعلانات في حزمة تابع لجهة خارجية.-
API_KEY
(يُستخدم فقط لبث الأحداث المباشرة): مفتاح اختياري لواجهة برمجة التطبيقات يمكن أن يكون مطلوبًا لاسترداد معرّف بث من حزمة تطوير البرامج (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
بعد الانتهاء بنجاح من طلب الإعلانات وعرضها في بث "عرض الإعلانات المتسلسلة" باستخدام حزمة تطوير البرامج IMA DAI، ننصحك بإزالة أي موارد بعد انتهاء جلسة "عرض الإعلانات المتسلسلة". اتّصِل بالرقم IMAStreamManager.destroy()
لإيقاف تشغيل البث مؤقتًا، وإيقاف جميع عمليات تتبُّع الإعلانات، وإصدار جميع مواد عرض البث التي تم تحميلها.
للاطّلاع على أمثلة أخرى على استخدام حزمة تطوير البرامج (SDK) لنظام التشغيل tvOS، يُرجى الاطّلاع على الأمثلة على GitHub.