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