ערכות ה-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
אחרי שתסיימו לבקש ולהציג מודעות בסטרימינג של Pod Serving באמצעות IMA DAI SDK, מומלץ לנקות את המשאבים בסיום הסשן של Pod Serving. קוראים לפונקציה StreamManager.destroy()
כדי להפסיק את ההפעלה של הסטרימינג, להפסיק את כל המעקב אחר מודעות ולשחרר את כל נכסי הסטרימינג שנטענו.
דוגמאות נוספות לשימוש ב-Android SDK זמינות בדוגמאות ב-GitHub.