تسهِّل حِزم تطوير البرامج (SDK) لإعلانات الوسائط التفاعلية دمج إعلانات الوسائط المتعددة في مواقعك الإلكترونية وتطبيقاتك. يمكن لحزمة تطوير البرامج لإعلانات الوسائط التفاعلية طلب إعلانات من أي خادم إعلانات متوافق مع VAST وإدارة تشغيل الإعلانات في تطبيقاتك. باستخدام حِزم تطوير البرامج لميزة "إدراج إعلان ديناميكي" في إعلانات الوسائط التفاعلية (IMA DAI SDK)، تقدّم التطبيقات طلبًا لبث الإعلان والفيديو، سواء كان محتوى مسجّلاً أو محتوى مباشرًا. تُرجع حزمة SDK بعد ذلك الفيديو المضمّن، بحيث لا تضطر إلى إدارة التبديل بين الإعلان والفيديو في شبكة المحتوى داخل تطبيقك.
اختيار حلّ DAI المطلوب
عرض الإعلانات الديناميكية في مجموعات الإعلانات
يوضّح هذا الدليل كيفية تشغيل بث مباشر أو بث مسجّل باستخدام حزمة تطوير البرامج لإعلانات الوسائط التفاعلية لعرض الإعلانات الديناميكية (IMA DAI SDK) لنظام التشغيل tvOS باستخدام مشغّل فيديو بسيط. إذا أردت اتّباع الخطوات مع نموذج مكتمل، نزِّل مثال تطبيق Pod Serving (Obj C أو Swift).
نظرة عامة على عرض الإعلانات المتسلسلة لإعلانات الوسائط التفاعلية
يشمل تنفيذ عرض الإعلانات المتسلسلة باستخدام حزمة تطوير البرامج لإدراج إعلان ديناميكي لإعلانات الوسائط التفاعلية لنظام التشغيل tvOS اثنين المكونات:
StreamRequest
: عنصر يحدّد طلب بث إلى خوادم Google الإعلانية. يجب إنشاؤها باستخدام إماIMAPodStreamRequest
أوIMAPodVODStreamRequest
لتفعيل عرض مجموعات التطبيقات تتطلب كلتا الطريقتين رمز شبكة يحتاجIMAPodStreamRequest
أيضًا إلى مفتاح مادة عرض مخصّص. مفتاح واجهة برمجة التطبيقات هو اختيارية.IMAStreamManager
: كائن يعالج الاتصال بين الفيديو المضمّن وحزمة تطوير البرامج لإدراج إعلان ديناميكي لإعلانات الوسائط التفاعلية، مثل إشعارات التتبع إعادة توجيه أحداث البث إلى الناشر.
المتطلبات الأساسية
قبل البدء، تحتاج إلى ما يلي:
- الإصدار 13 من Xcode أو إصدار أحدث
- CocoaPods (الخيار المفضّل) أو Swift Package Manager أو نسخة تم تنزيلها من حزمة تطوير البرامج لإدراج إعلان ديناميكي لإعلانات الوسائط التفاعلية لنظام التشغيل tvOS:
- تطبيق tvOS تم إعداده مسبقًا باستخدام حزمة تطوير البرامج لميزة "إدراج الإعلان الديناميكي" في إعلانات الوسائط التفاعلية لتشغيل أحداث بث الفيديو مع إعلانات "إدراج الإعلان الديناميكي" إذا لم يكن لديك تطبيق مماثل، ننصحك باستخدام المثال التالي: tvOS DAI BasicExample كنقطة بدء. يحتوي BasicExample على قاعدة التعليمات البرمجية المشار إليها في هذا الدليل. لمزيد من المعلومات حول كيفية تنفيذ حزمة تطوير البرامج لعرض الإعلانات الديناميكية في "إعلانات الوسائط التفاعلية"، يُرجى الاطّلاع على دليل البدء السريع.
إعداد متغيّرات عرض الحِزم
سيتم تنفيذ جميع التغييرات اللازمة لعرض مجموعات الإعلانات المتسلسلة في ViewController.swift
في
Swift أو ViewController.m
في Objective-C. المقتطفات في هذا الدليل
افتراضيًا إلى استخدام لغة Swift. تتمثل الخطوة الأولى في تحديث
المتغيرات الثابتة.
في ما يلي ثوابت طلبات بث مجموعة الإعلانات المتسلسلة المطلوب إضافتها:
STREAM_URL
(يُستخدَم فقط لأحداث البث المباشر): عنوان URL لبث الفيديو الذي توفّره الجهة المسؤولة عن التحكّم في البيان أو الشريك الخارجي الذي يستخدم عرض الإعلانات المتسلسلة. يجب مطلوب منك إدراج معرّف مصدر البيانات الذي توفّره حزمة تطوير البرامج لإدراج إعلان ديناميكي لإعلانات الوسائط التفاعلية قبل تقديم طلب في هذه الحالة، يتضمّن عنوان URL للبث عنصر نائب، وهو"[[STREAMID]]"
، ويتم استبداله بمعرّف البث قبل تقديم طلب.NETWORK_CODE
: رمز الشبكة لحسابك على "مدير الإعلانات 360".CUSTOM_ASSET_KEY
(يُستخدَم فقط مع أحداث البث المباشر): مفتاح مادة العرض المخصّصة الذي يحدّد حدث عرض مجموعة الإعلانات المتسلسلة في "مدير إعلانات Google 360". يمكن أن يتم إنشاء هذا المحتوى من قِبل محرِّك البيان أو شريك عرض مجموعة الوحدات التابع لجهة خارجية.-
API_KEY
(تُستخدَم فقط مع أحداث البث المباشر): مفتاح اختياري لواجهة برمجة التطبيقات يمكن أن يكون مطلوبًا لاسترداد معرّف البث من حزمة تطوير البرامج لميزة "إدراج الإعلان الديناميكي" في إعلانات الوسائط التفاعلية.
غيِّر قسم المتغيّرات في المثال ليتطابق مع ما يلي:
...
class ViewController:
UIViewController,
IMAAdsLoaderDelegate,
IMAStreamManagerDelegate,
AVPlayerViewControllerDelegate
{
static let streamUrl =
"https://encodersim.sandbox.google.com/masterPlaylist/9c654d63-5373-4673-8c8d-6d92b66b9d46/master.m3u8?gen-seg-redirect=true&network=51636543&event=google-sample&pids=devrel4628000,devrel896000,devrel3528000,devrel1428000,devrel2628000,devrel1928000&seg-host=dai.google.com&stream_id=[[STREAMID]]"
static let networkCode = "51636543"
static let customAssetKey = "google-sample"
static let APIKey = ""
static let backupStreamURLString =
"http://googleimadev-vh.akamaihd.net/i/big_buck_bunny/bbb-,480p,720p,1080p,.mov.csmil/master.m3u8"
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 للبث وأي مقاطع ترجمة وشرح يعرضها شريك المحتوى التلفزيوني (TVP).
...
// 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
}
هذا كل شيء! أنت الآن تطلب الإعلانات وتعرضها في مجموعة بث تعرض الإعلانات المتسلسلة باستخدام حزمة تطوير البرامج لإدراج إعلان ديناميكي لإعلانات الوسائط التفاعلية لنظام التشغيل tvOS للاطّلاع على أمثلة أخرى على استخدام حزمة تطوير البرامج IMA DAI SDK، اطّلِع على عيّنات على GitHub.