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

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

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

הטמעת DAI בפודים

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

סקירה כללית של הצגת IMA DAI Pod

ההטמעה של הצגת רצף מודעות באמצעות IMA DAI SDK ל-iOS כוללת שני רכיבים עיקריים:

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

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

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

לפני שמתחילים:

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

הגדרת המשתנים להצגת מודעות pod

כל השינויים הנדרשים להצגת פוד מתבצעים ב-ViewController.swift ב-swift או ב-ViewController.m ב-Objective-C. קטעי הקוד במדריך הזה משתמשים בשפת Swift כברירת מחדל. השלב הראשון הוא לעדכן את המשתנים הקבועים.

אלו הם הקבועים של הבקשות לזרם מודעות של רצף מודעות שיש להוסיף:

  • STREAM_URL (משמשת רק לשידורים חיים): כתובת ה-URL של שידור הווידאו שסופק על ידי מפעיל המניפולציה של המניפסט או שותף צד שלישי שמשתמשים בהצגת רצף מודעות. עליך להזין את מזהה מקור הנתונים שסופק על ידי IMA DAI SDK לפני שליחת הבקשה. במקרה כזה, כתובת ה-URL של מקור הנתונים כוללת placeholder שנקרא "[[STREAMID]]", שמוחלף במזהה מקור הנתונים, לפני שליחת הבקשה.
  • NETWORK_CODE: קוד הרשת של חשבון Ad Manager 360.
  • CUSTOM_ASSET_KEY (משמש רק לשידורים חיים): מפתח הנכס המותאם אישית שמזהה את האירוע של הצגת הרצף ב-Ad Manager 360. אפשר ליצור אותו באמצעות מפעיל המניפולציה של המניפסט או שותף להצגת רצף מודעות של צד שלישי.
  • 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

הצגת רצף מודעות בשידור חי

משנים את השיטה requestStream כדי ליצור בקשה בשידור חי של Pod Stream על ידי יצירת 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 כדי ליצור בקשה ל-VOD Pod Stream על ידי יצירת 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
  }

  ...

הצגת רצף מודעות ב-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
  }

זהו! אתם מבקשים ומציגים מודעות ברצף להצגת מודעות באמצעות IMA DAI SDK ל-iOS. כדי לראות דוגמאות נוספות לשימוש ב-IMA DAI SDK, עיינו בדוגמאות ב-GitHub.