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

ערכות IMA SDK מאפשרות לכם לשלב בקלות מודעות מולטימדיה באתרים ובאפליקציות שלכם. ערכות IMA SDK יכולות לבקש מודעות מכל שרת מודעות שתואם ל-VAST ולנהל את הפעלת המודעות באפליקציות שלכם. בעזרת ערכות IMA DAI SDK, אפליקציות בקשה לשידור וידאו של מודעה ותוכן – VOD או תוכן בשידור חי. לאחר מכן ה-SDK מחזיר סטרימינג משולב של מודעות וידאו, כך שלא יהיה צורך לנהל את המעבר בין מודעות וידאו בתוכן בתוך האפליקציה.

איך בוחרים את פתרון DAI שמעניין אתכם

הטמעת מודעות דינמיות (DAI) ב-Pod

המדריך הזה מדגים איך מפעילים Pod של DAI להצגת מודעות בשידור חי או ב-VOD, באמצעות IMA DAI SDK ל-iOS באמצעות נגן וידאו פשוט. אם רוצים לעקוב יחד עם טעימה שהושלמה, מורידים את דוגמה להצגת pod.

סקירה כללית בנושא הצגת מודעות Pod של IMA DAI

כדי להטמיע הצגת מודעות Pod באמצעות IMA DAI SDK ל-iOS, צריך רכיבים:

  • StreamRequest: אובייקט שמגדיר בקשה של מקור נתונים שרתי הפרסום של Google. יש ליצור באמצעות אחד מהשניים IMAPodStreamRequest או IMAPodVODStreamRequest כדי לאפשר הצגת Pod. לשתי ה-methods נדרשים קוד רשת וגם ל-IMAPodStreamRequest נדרש גם מפתח נכס בהתאמה אישית. מפתח API הוא אופציונלי.

  • IMAStreamManager: אובייקט שמטפל בתקשורת בין הסטרימינג של הווידאו ו-IMA DAI SDK, כמו הפעלת פינגים של מעקב. להעביר אירועים בסטרימינג לבעל התוכן הדיגיטלי.

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

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

  • Xcode 13 ואילך.
  • CocoaPods (מועדף), Swift Package Manager, או עותק של ההורדה IMA DAI SDK ל-iOS.
  • אפליקציה ל-iOS שכבר הוגדרה עם IMA DAI SDK להפעלת שידורי וידאו מודעות DAI. אם עדיין אין לך אפליקציה כזו, מומלץ להשתמש הטמעת מודעות דינמיות ב-iOS דוגמה בסיסית בתור לנקודת ההתחלה. ל- 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

הצגת Pod של שידורים חיים

צריך לשנות את השיטה 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

צריך לשנות את השיטה 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 של השידור

הצגת Pod של שידורים חיים

שינוי השיטות 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 ל-iOS. כדי לראות דוגמאות נוספות של IMA DAI SDK שבו נעשה שימוש, חפשו את הדוגמאות ב-GitHub.