הגדרת IMA SDK ל-DAI

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

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

הצגת DAI ב-Pod

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

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

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

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

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

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

הגדרת משתנים להצגת מודעות ב-Pod

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

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

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

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

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

  • 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);

הצגת פודים של שידורי 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 של השידור

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

מפעילים את השיטה 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();

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

  1. מפעילים את השיטה 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, ‏ IMA קורא ל-VideoStreamPlayer.loadUrl()callback כשהסטרימינג נטען. כדי להתחיל את הפעלת הסטרימינג, מוסיפים את הקריאות 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.