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