תחילת העבודה עם IMA DAI SDK

ערכות 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, כמו הפעלת פינגים של מעקב. להעביר אירועים בסטרימינג לבעל התוכן הדיגיטלי.

דרישות מוקדמות

לפני שמתחילים, צריך:

הגדרת משתני ההצגה של 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.