تُسهِّل أدوات تطوير البرامج لإعلانات الوسائط التفاعلية عملية دمج إعلانات الوسائط المتعددة في مواقعك الإلكترونية وتطبيقاتك. يمكن لحِزم تطوير البرامج لإعلانات الوسائط التفاعلية طلب الإعلانات من أي خادم إعلانات متوافق مع نموذج عرض إعلانات الفيديو (VAST)، وإدارة تشغيل الإعلانات في تطبيقاتك. باستخدام حزم تطوير البرامج لإدراج إعلان ديناميكي لإعلانات الوسائط التفاعلية، يمكن للتطبيقات إرسال طلب لبث محتوى الفيديو الذي يضم إعلان ومحتوى، سواء كان فيديو عند الطلب أو محتوى مباشر. بعد ذلك، تعرض حزمة تطوير البرامج (SDK) فيديو مضمّنًا مجمّعًا لكي لا تضطر إلى إدارة التبديل بين الإعلان والفيديو في تطبيقك داخل التطبيق.
اختيار حلّ DAI المطلوب
إدراج إعلان ديناميكي في مجموعة الإعلانات
يشرح هذا الدليل كيفية تشغيل بث مباشر أو فيديو عند الطلب لعرض إعلانات مجموعة DAI باستخدام حزمة تطوير البرامج لإدراج إعلان ديناميكي لإعلانات الوسائط التفاعلية لنظام التشغيل iOS مع مشغّل فيديو بسيط. إذا كنت تريد متابعة عيّنة مكتملة، يمكنك تنزيل مثال على عرض الإعلانات المتسلسلة.
نظرة عامة على عرض الإعلانات المتسلسلة لإعلانات الوسائط التفاعلية
يتضمّن تنفيذ عرض الإعلانات المتسلسلة باستخدام حزمة تطوير البرامج لإدراج إعلان ديناميكي لإعلانات الوسائط التفاعلية لنظام التشغيل iOS مكوّنَين رئيسيَين:
StreamRequest
: كائن يحدّد طلب البث إلى خوادم إعلانات Google يجب إنشاؤها باستخدام إماIMAPodStreamRequest
أوIMAPodVODStreamRequest
لتفعيل عرض الإعلانات المتسلسلة. تتطلب كلتا الطريقتين رمز شبكة وIMAPodStreamRequest
أيضًا إلى مفتاح مادة عرض مخصّص. يكون مفتاح واجهة برمجة التطبيقات اختياريًا.IMAStreamManager
: كائن يعالج الاتصال بين الفيديو المضمّن وحزمة تطوير البرامج لإدراج إعلان ديناميكي لإعلانات الوسائط التفاعلية، مثل تنشيط إشعارات التتبّع وإعادة توجيه أحداث البث إلى الناشر.
المتطلّبات الأساسية
قبل البدء، تحتاج إلى ما يلي:
- Xcode 13 أو أحدث.
- CocoaPods (الخيار المفضّل) أو Swift Package Manager أو نسخة تم تنزيلها من حزمة تطوير البرامج لإدراج إعلان ديناميكي لإعلانات الوسائط التفاعلية لنظام التشغيل iOS.
- تطبيق لنظام التشغيل iOS تم إعداده من قبل باستخدام حزمة تطوير البرامج لإدراج إعلان ديناميكي لإعلانات الوسائط التفاعلية لتشغيل الفيديوهات المضمّنة مع إعلانات "إدراج إعلان ديناميكي" إذا لم يكن لديك هذا التطبيق، ننصحك باستخدام المثال الأساسي لـ DAI في iOS كنقطة بداية. يحتوي 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()
لتطلب من "إعلانات الوسائط التفاعلية"
تحميل عنوان 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
}
أكملت هذه الخطوة. أنت الآن تطلب الإعلانات وتعرضها في مجموعة بث تعرض مجموعات الإعلانات باستخدام حزمة تطوير البرامج لإدراج إعلان ديناميكي لإعلانات الوسائط التفاعلية لنظام التشغيل iOS. للاطّلاع على أمثلة أخرى على استخدام حزمة تطوير البرامج لإدراج إعلان ديناميكي لإعلانات الوسائط التفاعلية، راجِع النماذج على GitHub.