ערכות IMA SDK מאפשרות לכם לשלב בקלות מודעות מולטימדיה באתרים ובאפליקציות שלכם. ערכות IMA SDK יכולות לבקש מודעות מכל שרת מודעות שתואם ל-VAST ולנהל את הפעלת המודעות באפליקציות שלכם. בעזרת ערכות IMA DAI SDK, אפליקציות בקשה לשידור וידאו של מודעה ותוכן – VOD או תוכן בשידור חי. לאחר מכן ה-SDK מחזיר סטרימינג משולב של מודעות וידאו, כך שלא יהיה צורך לנהל את המעבר בין מודעות וידאו בתוכן בתוך האפליקציה.
איך בוחרים את פתרון DAI שמעניין אתכם
הטמעת מודעות דינמיות (DAI) ב-Pod
המדריך הזה מדגים איך מפעילים Pod של DAI להצגת מודעות בשידור חי או ב-VOD באמצעות IMA DAI SDK ל-tvOS באמצעות נגן וידאו פשוט. אם רוצים לעקוב אחרי יחד עם הדוגמה שהושלמה, מורידים את האפליקציה לדוגמה להצגת Pod (Obj C או Swift).
סקירה כללית בנושא הצגת מודעות Pod של IMA DAI
כדי להטמיע הצגת מודעות Pod באמצעות IMA DAI SDK ל-tvOS, צריך רכיבים:
StreamRequest
: אובייקט שמגדיר בקשה של מקור נתונים שרתי הפרסום של Google. יש ליצור באמצעות אחד מהשנייםIMAPodStreamRequest
אוIMAPodVODStreamRequest
כדי לאפשר הצגת Pod. לשתי ה-methods נדרשים קוד רשת וגם ל-IMAPodStreamRequest
נדרש גם מפתח נכס בהתאמה אישית. מפתח API הוא אופציונלי.IMAStreamManager
: אובייקט שמטפל בתקשורת בין הסטרימינג של הווידאו ו-IMA DAI SDK, כמו הפעלת פינגים של מעקב. להעביר אירועים בסטרימינג לבעל התוכן הדיגיטלי.
דרישות מוקדמות
לפני שמתחילים, צריך:
- Xcode 13 ואילך.
- CocoaPods (מועדף), Swift Package Manager, או עותק של ההורדה IMA DAI SDK ל-tvOS.
- אפליקציית tvOS שכבר הוגדרה עם IMA DAI SDK להפעלת שידורי וידאו באמצעות מודעות DAI. אם עדיין אין לך אפליקציה כזו, מומלץ להשתמש הטמעת מודעות דינמיות (DAI) ב-tvOS דוגמה בסיסית לנקודת ההתחלה. ל- BasicExample יש את ה-codebase שמוזכרים כאן מותאמת אישית. מידע נוסף על אופן ההטמעה של IMA DAI SDK זמין במאמר מדריך למתחילים.
הגדרת משתני ההצגה של pod
כל השינויים שנדרשים להצגת Pod יבוצעו ב-ViewController.swift
ב-
SWIFT או ViewController.m
ב-Objective-C. קטעי הקוד במדריך הזה
כברירת מחדל, ייעשה שימוש בשפת SWIFT. השלב הראשון הוא לעדכן את
עם משתנים קבועים.
הנה קבועי הבקשות של רצף המודעות שיש להוסיף:
STREAM_URL
(משמש רק בשידורים חיים): כתובת ה-URL של הסרטון סופקה על ידי הכלי לטיפול במניפסט או שותף צד שלישי באמצעות הצגת Pod. היא צריכה תצטרכו להזין את מזהה מקור הנתונים שסופק על ידי IMA DAI SDK, לפני לשלוח בקשה. במקרה הזה, כתובת ה-URL של השידור כוללת placeholder,"[[STREAMID]]"
, שמוחלף במזהה מקור הנתונים, לפני שיוצרים בקשה.NETWORK_CODE
: קוד הרשת של חשבון Ad Manager 360.CUSTOM_ASSET_KEY
(משמש רק בשידורים חיים): מפתח הנכס המותאם אישית מזהה את אירוע הצגת ה-Pod ב-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?
...
יצירת בקשה לשידור חי או ל-Pod של VOD
הצגת פודקאסטים בשידור חי
צריך לשנות את השיטה requestStream
כדי ליצור בקשה של Pod בשידור חי באמצעות
יוצר את 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)
}
...
הצגת Pod של שידורים ב-VOD
צריך לשנות את ה-method 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
כדי
מאתרים את מזהה מקור הנתונים. לאחר מכן מזינים את מזהה מקור הנתונים אל 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
}
...
הצגת Pod של שידורים ב-VOD
שינוי השיטות IMAAdsLoaderDelegate
, באמצעות streamManager.streamId
כדי
מאתרים את מזהה מקור הנתונים. לאחר מכן, מבקשים את כתובת ה-URL של השידור באמצעות טכנולוגיית הווידאו
שותף (VTP) והתקשר אל 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
}
זהו! עכשיו אתה מבקש ומציג מודעות בזרם הצגת Pod עם IMA DAI SDK ל-tvOS. כדי לראות דוגמאות נוספות של IMA DAI SDK שבו נעשה שימוש, חפשו את הדוגמאות ב-GitHub.