הגדרת IMA SDK ל-DAI

בחירת פלטפורמה: HTML5 Android iOS tvOS Cast Roku

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

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

הצגת מודעות דינמיות (DAI) בפודקאסטים

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

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

סקירה כללית על הצגת מודעות דינמיות (DAI) בבלוקים ב-IMA

  • ‫StreamRequest: אובייקט שמגדיר בקשת סטרימינג לשרתי הפרסום של Google. חובה ליצור את ה-Pod באמצעות ImaSdkFactory.createPodStreamRequest() או ImaSdkFactory.createPodVodStreamRequest() כדי להפעיל את ההצגה של ה-Pod. השיטות האלה דורשות קוד רשת, והשיטה createPodStreamRequest דורשת גם מפתח נכס בהתאמה אישית ומפתח API אופציונלי. שניהם כוללים פרמטרים אופציונליים נוספים.

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

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

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

כל השינויים שנדרשים להצגת מודעות ב-Pod מתבצעים ב-SampleAdsWrapper.java. השלב הראשון הוא לעדכן את המשתנים הקבועים.

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

  • ‫STREAM_URL: משמש רק לשידורים חיים – כתובת ה-URL של שידור הווידאו שסופקה על ידי הכלי לשינוי מניפסט או על ידי שותף צד שלישי באמצעות Pod Serving. הוא צריך לדרוש ממך להוסיף את מזהה הסטרימינג שסופק על ידי IMA DAI SDK, לפני שאתה שולח בקשה. במקרה הזה, כתובת URL של שידור כוללת פלייס הולדר, "[[STREAMID]]", שמוחלף במזהה הסטרימינג לפני שליחת הבקשה.

  • ‫NETWORK_CODE: הקוד של הרשת של חשבון Ad Manager 360.

  • ‫CUSTOM_ASSET_KEY: משמש רק לשידורים חיים – מפתח הנכס המותאם אישית שמזהה את האירוע של הצגת פודים ב-Ad Manager 360. אפשר ליצור את הקובץ הזה באמצעות הכלי לשינוי קובץ המניפסט או באמצעות שותף צד שלישי שמספק פודים.

  • ‫API_KEY: משמש רק לשידורים חיים – מפתח API אופציונלי שעשוי להידרש כדי לאחזר מזהה של סטרימינג מ-IMA DAI SDK.

הדוגמה הבסיסית של DAI ב-Android מיועדת להפעלה של מגוון סוגים שונים של סטרימינג, אבל לצורך הצגת מודעות בתוך פודקאסט, היא מוגדרת להפעלה של סטרימינג יחיד בלבד. משנים את קטע המשתנים בדוגמה כך שיתאים לערכים הבאים:

/** This class implements IMA to add pod ad-serving support to SampleVideoPlayer */
@SuppressLint("UnsafeOptInUsageError")
/* @SuppressLint is needed for new media3 APIs. */
public class SampleAdsWrapper
    implements AdEvent.AdEventListener, AdErrorEvent.AdErrorListener, AdsLoader.AdsLoadedListener {

  // Set up the pod serving variables.
  private static final String NETWORK_CODE = "";
  private static final String CUSTOM_ASSET_KEY = "";
  private static final String API_KEY = "";
  private static final String STREAM_URL = "";
  private static final StreamFormat STREAM_FORMAT = StreamFormat.HLS;

יצירת בקשה לשידור פודקאסט בשידור חי או ב-VOD כדי להפעיל את התכונה 'הצגת פודקאסטים'

הצגת פודים בשידור חי

מסירים את השיטה buildStreamRequest() ששימשה למעבר בין סוגים שונים של זרמים. לאחר מכן, משנים את requestAndPlayAds() כדי לבצע קריאה אל ImaSdkFactory.createPodStreamRequest() וליצור בקשה להצגת מודעה בשידור חי.

// Live pod stream request.
request = sdkFactory.createPodStreamRequest(NETWORK_CODE, CUSTOM_ASSET_KEY, API_KEY);

הצגת תוכן ב-Pod של שידור VOD

מסירים את השיטה buildStreamRequest() ששימשה למעבר בין סוגים שונים של זרמים. לאחר מכן, משנים את requestAndPlayAds() כדי לבצע קריאה אל ImaSdkFactory.createPodVodStreamRequest() וליצור בקשה להצגת מודעה ב-VOD Pod.

// VOD pod stream request.
request = sdkFactory.createPodVodStreamRequest(NETWORK_CODE);

אחרי שיוצרים את מופע בקשת הסטרימינג, שולחים בקשה לסטרימינג באמצעות AdsLoader.requestStream():

request.setFormat(STREAM_FORMAT);
adsLoader.requestStream(request);

עריכה והגדרה של כתובת ה-URL של השידור

הצגת פודים בשידור חי

מבצעים קריאה ל-method‏ StreamManager.getStreamId() כדי לקבל את מזהה מקור הנתונים. צריך להוסיף את הקוד הזה ל-STEAM_URL במקום "[[STREAMID]]". אחרי שמבצעים את השינוי הזה, מגדירים את כתובת ה-URL החדשה של הסטרימינג באמצעות השיטה videoPlayer.setStreamUrl() וקוראים לשיטה videoPlayer.play() כדי להתחיל את הפעלת הסטרימינג.

// Play the live pod stream.
streamID = streamManager.getStreamId();
String liveStreamUrl = STREAM_URL.replace("[[STREAMID]]", streamID);
// Call videoPlayer.play() here, because IMA doesn't call the VideoStreamPlayer.loadUrl()
// function for livestreams.
videoPlayer.setStreamUrl(liveStreamUrl);
videoPlayer.play();

הצגת תוכן ב-Pod של שידור VOD

  1. מבצעים קריאה ל-method‏ StreamManager.getStreamId() כדי לקבל את מזהה מקור הנתונים.
  2. מבקשים כתובת URL של שידור מהשותף הטכנולוגי של הווידאו (VTP).
  3. אחרי שמקבלים את כתובת ה-URL מספק ה-VTP, מתקשרים אל השיטה StreamManager.loadThirdPartyStream() עם כתובת ה-URL כדי לטעון את הסטרימינג, וגם עם כל הכתוביות שספק ה-VTP מחזיר.
// Play the VOD pod stream.
streamID = streamManager.getStreamId();
String vodStreamUrl = "";
// Refer to your Video Tech Partner (VTP) or video stitching guide to fetch the stream URL
// and the subtitles for a the ad stitched VOD stream.

// In the following commented out code, 'vtpInterface' is a place holder
// for your own video technology partner (VTP) API calls.
// vodStreamUrl = vtpInterface.requestStreamURL(streamID);
List<Map<String, String>> subtitles = new ArrayList<>();
streamManager.loadThirdPartyStream(vodStreamUrl, subtitles);

עבור בקשות להצגת מודעות ב-VOD Pod Serving, ‏ IMA קורא לפונקציית הקריאה החוזרת VideoStreamPlayer.loadUrl() כשהסטרימינג נטען. כדי להתחיל את הפעלת הסטרימינג, מוסיפים את הקריאות videoPlayer.setStreamUrl() ו-videoPlayer.play() לקריאה החוזרת VideoStreamPlayer.loadUrl():

private VideoStreamPlayer createVideoStreamPlayer() {
  return new VideoStreamPlayer() {
    @Override
    public void loadUrl(String url, List<HashMap<String, String>> subtitles) {
      // IMA doesn't make calls to VideoStreamPlayer.loadUrl() for pod serving live streams.
      // The following code is for VOD streams.
      videoPlayer.setStreamUrl(url);
      videoPlayer.play();
    }

לפנות נכסים ב-IMA DAI

אחרי שמסיימים בהצלחה את הבקשה להצגת מודעות בסטרימינג של Pod Serving באמצעות IMA DAI SDK, מומלץ לנקות את כל המשאבים אחרי שמסיימים את הסשן של Pod Serving. מתקשרים אל StreamManager.destroy() כדי להפסיק את ההפעלה של הסטרימינג, להפסיק את כל המעקב אחרי ביצועים של מודעות ולשחרר את כל נכסי הסטרימינג שנטענו.

דוגמאות נוספות לשימוש ב-Android SDK זמינות בדוגמאות ב-GitHub.