הגדרה באמצעות שירות Pod DAI

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

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

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

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

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

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

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

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

כל השינויים שנדרשים להצגת מודעות ברצף מתבצעים ב-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.

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

/** 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 Serving.

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

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

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

// 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();

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

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

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