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