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

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

בחירת פתרון ה-DAI הרצוי

Pod Serving DAI

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

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

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

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

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

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

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

  • כדי ש-IMA DAI יפעל, חשוב שהאפליקציה תשלח אירועי ID3 באמצעות VideoStreamPlayerCallback.onUserTextReceived(). כאן אפשר למצוא קטע קוד לדוגמה ל-DAI בשירות מלא.

הגדרת משתני ההצגה של Pod

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

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

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

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

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

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

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

/** This class adds ad-serving support to Sample HlsVideoPlayer */
public class SampleAdsWrapper
        implements AdEvent.AdEventListener, AdErrorEvent.AdErrorListener, AdsLoader.AdsLoadedListener {

  // Podserving Stream Constants.
  private static final String STREAM_URL =
          "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]]";
  private static final String NETWORK_CODE = "51636543";
  private static final String CUSTOM_ASSET_KEY = "google-sample";
  private static final String API_KEY = "";

  private static final String PLAYER_TYPE = "DAISamplePlayer";

  /** Log interface, so we can output the log commands to the UI or similar. */
  public interface Logger {

...

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

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

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

public void requestAndPlayAds() {
  StreamRequest request =
      sdkFactory.createPodStreamRequest(NETWORK_CODE, CUSTOM_ASSET_KEY, API_KEY);
  request.setFormat(StreamFormat.HLS);

  adsLoader.addAdErrorListener(this);
  adsLoader.addAdsLoadedListener(this);
  adsLoader.requestStream(request);
}

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

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

public void requestAndPlayAds() {
  StreamRequest request =
      sdkFactory.createPodVodStreamRequest(NETWORK_CODE);
  request.setFormat(StreamFormat.HLS);

  adsLoader.addAdErrorListener(this);
  adsLoader.addAdsLoadedListener(this);
  adsLoader.requestStream(request);
}

עריכה והגדרה של כתובת ה-URL של מקור הנתונים

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

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

@Override
public void onAdsManagerLoaded(AdsManagerLoadedEvent event) {
  streamManager = event.getStreamManager();
  streamManager.addAdErrorListener(this);
  streamManager.addAdEventListener(this);

  // To enable streams
  String streamID = streamManager.getStreamId();
  String streamUrl = STREAM_URL.replace("[[STREAMID]]", streamID);

  streamManager.init();

  videoPlayer.setStreamUrl(streamUrl);
  videoPlayer.play();
}

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

קוראים ל-StreamManager.getStreamId() כדי לקבל את מזהה מקור הנתונים. לאחר מכן, מבקשים כתובת URL של סטרימינג מהשותף שלכם לטכנולוגיית וידאו (VTP). לאחר מכן, צריך להפעיל את StreamManager.loadThirdPartyStream() כדי לאפשר ל-IMA לטעון את כתובת ה-URL של הסטרימינג ואת כל הכתוביות שהוחזרו על ידי ה-TVP.

@Override
public void onAdsManagerLoaded(AdsManagerLoadedEvent event) {
  streamManager = event.getStreamManager();
  streamManager.addAdErrorListener(this);
  streamManager.addAdEventListener(this);

  // To enable streams
  String streamID = streamManager.getStreamId();
  // 'vtpInterface' is a place holder for your own video technology partner
  // (VTP) API calls.
  String streamUrl = vtpInterface.requestStreamURL(streamID);

  streamManager.init();

  // Pass any subtitles returned by your VTP in this step as well.
  streamManager.loadThirdPartyStream(streamUrl, subtitles);
}

כשהצגת מודעות במודול מופעלת, IMA לא מבצעת קריאות אל VideoStreamPlayer.loadUrl(), כך שאפשר להסיר ממנה את כל הקריאות אל videoPlayer.setStreamUrl() ו-videoPlayer.play().

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