کیتهای توسعه نرمافزار IMA ادغام تبلیغات چندرسانهای را در وبسایتها و برنامههای شما آسان میکنند. کیتهای توسعه نرمافزار IMA میتوانند از هر سرور تبلیغاتی سازگار با VAST درخواست تبلیغات کنند و پخش تبلیغات را در برنامههای شما مدیریت کنند. با کیتهای توسعه نرمافزار IMA DAI، برنامهها درخواست پخش جریانی برای تبلیغات و ویدیوی محتوا - چه VOD و چه محتوای زنده - ارسال میکنند. سپس SDK یک جریان ویدیویی ترکیبی را برمیگرداند، به طوری که شما مجبور نیستید جابجایی بین ویدیوی تبلیغ و محتوا را در برنامه خود مدیریت کنید.
راهکار DAI مورد نظرتان را انتخاب کنید
غلاف سروینگ دای
این راهنما نحوه پخش زنده یا استریم VOD از DAI Pod Serving را با استفاده از IMA DAI SDK برای tvOS با یک پخشکننده ویدیو نشان میدهد. برای مشاهده یا دنبال کردن یک نمونه کامل از یکپارچهسازی، برنامه نمونه Pod Serving ( Obj C یا Swift ) را دانلود کنید.
نمای کلی سرویس غلاف IMA DAI
پیادهسازی سرویس پاد با استفاده از کیت توسعه نرمافزار IMA DAI برای tvOS شامل دو مؤلفه اصلی است:
StreamRequest: شیءای که درخواست پخش جریانی را برای سرورهای تبلیغاتی گوگل تعریف میکند. برای فعال کردن سرویس پاد، باید با استفاده ازIMAPodStreamRequestیاIMAPodVODStreamRequestایجاد شود. هر دو روش به یک کد شبکه نیاز دارند وIMAPodStreamRequestهمچنین به یک کلید دارایی سفارشی نیاز دارد. کلید API اختیاری است.IMAStreamManager: شیءای که ارتباط بین جریان ویدئو و IMA DAI SDK را مدیریت میکند، مانند اجرای پینگهای ردیابی و ارسال رویدادهای جریان به ناشر.
پیشنیازها
قبل از شروع، به موارد زیر نیاز دارید:
- ایکسکد ۱۳ یا بالاتر.
- CocoaPods (ترجیحاً)، Swift Package Manager یا یک نسخه دانلود شده از IMA DAI SDK برای tvOS .
- یک برنامه tvOS که از قبل با IMA DAI SDK برای پخش استریمهای ویدیویی با تبلیغات DAI تنظیم شده است. اگر از قبل چنین برنامهای ندارید، توصیه میکنیم از tvOS DAI BasicExample به عنوان نقطه شروع استفاده کنید. BasicExample دارای کدبیس ارجاع شده در این راهنما است. برای اطلاعات بیشتر در مورد نحوه پیادهسازی IMA DAI SDK، به راهنمای شروع سریع مراجعه کنید.
متغیرهای سرو پاد خود را تنظیم کنید
تمام تغییرات مورد نیاز برای Pod Serving در ViewController.swift در Swift یا ViewController.m در Objective-C انجام میشود. قطعه کدهای این راهنما به طور پیشفرض از زبان Swift استفاده میکنند. اولین قدم بهروزرسانی متغیرهای ثابت است.
در اینجا ثابتهای درخواست جریان ad pod که باید اضافه شوند، آورده شده است:
-
STREAM_URL( فقط برای پخش زنده استفاده میشود ): آدرس اینترنتی پخش ویدئو که توسط دستکاریکننده مانیفست یا شریک شخص ثالث شما با استفاده از Pod Serving ارائه میشود. قبل از ارسال درخواست، باید از شما خواسته شود شناسه پخش ارائه شده توسط IMA DAI SDK را وارد کنید. در این حالت، آدرس اینترنتی پخش شامل یک متغیر"[[STREAMID]]"است که قبل از ارسال درخواست با شناسه پخش جایگزین میشود. -
NETWORK_CODE: کد شبکه برای حساب Ad Manager 360 شما. -
CUSTOM_ASSET_KEY( فقط برای پخش زنده استفاده میشود ): کلید دارایی سفارشی که رویداد Pod Serving شما را در Ad Manager 360 مشخص میکند. این کلید میتواند توسط دستکاریکنندهی مانیفست شما یا شریک Pod Serving شخص ثالث ایجاد شود. -
API_KEY( فقط برای پخش زنده استفاده میشود ): یک کلید API اختیاری که میتواند برای بازیابی شناسه پخش از IMA DAI 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?
...
درخواست پخش زنده یا VOD pod را ایجاد کنید
پخش زنده پاد سرو
متد 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)
}
...
سرویس پخش پاد VOD
متد requestStream را برای ایجاد یک درخواست استریم پاد VOD با نمونهسازی 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
}
...
سرویس پخش پاد VOD
متدهای IMAAdsLoaderDelegate با استفاده از streamManager.streamId برای دریافت شناسه جریان تغییر دهید. سپس، از شریک فناوری ویدیوی خود (VTP) یک URL جریان درخواست کنید و 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
}
پاکسازی داراییهای IMA DAI
وقتی درخواست و نمایش تبلیغات در یک جریان Pod Serving با IMA DAI SDK را با موفقیت به پایان رساندید، پیشنهاد میکنیم پس از اتمام جلسه Pod Serving، هرگونه منبعی را پاک کنید. برای متوقف کردن پخش جریان، متوقف کردن تمام ردیابی تبلیغات و آزاد کردن تمام داراییهای جریان بارگذاری شده، IMAStreamManager.destroy() را فراخوانی کنید.
برای مشاهدهی نمونههای دیگر از tvOS SDK مورد استفاده، به نمونههای موجود در GitHub مراجعه کنید.