בחירת פתרון DAI שמעניין אתכם
הטמעת מודעות דינמיות (DAI) בשירות מלא
מדריך זה מדגים איך להפעיל שידור DAI באמצעות IMA CAF DAI SDK. אם אתם רוצים לראות שילוב לדוגמה מלא או לעקוב אחריו, תוכלו להוריד את הדוגמה.
לפני השימוש במדריך הזה, הקפד להכיר את הפרוטוקול WebReceiver של Chromecast Application Framework. המדריך
מסביר ידע בסיסי במושגים של מקלטי CAF, כמו
יירוט הודעות
ואובייקטים של mediaInformation
, וכן ידע בשימוש בכלי לפקודות ובקרה של Cast כדי לחקות שולח CAF.
כדי להשתמש ב-IMA DAI, נדרש חשבון Ad Manager 360. אם יש לכם חשבון Ad Manager, תוכלו לפנות למנהל החשבון כדי לקבל פרטים נוספים. למידע על ההרשמה ל-Ad Manager, היכנסו למרכז העזרה של Ad Manager.
למידע על שילוב עם פלטפורמות אחרות או על השימוש ב-IMA SDK בצד הלקוח, ראו ערכות SDK של מודעות מדיה אינטראקטיביות.
סקירה כללית של הטמעת מודעות דינמיות לרשת החיפוש (CAF)
כדי להטמיע הטמעת מודעות דינמיות באמצעות IMA CAF DAI SDK יש צורך בשני רכיבים עיקריים, כפי שמתואר במדריך הזה:
StreamRequest
: אובייקט שמגדיר בקשה לשידור לשרתי הפרסום של Google. יש שתי גרסאות עיקריות של בקשות לשידור:LiveStreamRequest
: מציין מפתח נכס, מפתח API אופציונלי וכן פרמטרים אופציונליים נוספים.VODStreamRequest
: מציין את מזהה מקור התוכן, מזהה וידאו, מפתח API אופציונלי, וכן פרמטרים אופציונליים נוספים.
StreamManager
: אובייקט שמטפל בתקשורת בין שידור הווידאו לבין ה-IMA DAI SDK, למשל הפעלת פינגים למעקב והעברת אירועים משידור אל בעל התוכן הדיגיטלי.
דרישות מוקדמות
- חשבון ב-Cast Developer Console עם מכשיר בדיקה רשום.
- אפליקציה של מקלט אינטרנט מתארחת הרשומה במסוף המפתחים של Cast, שניתן לשנות כדי לארח את הקוד שבמדריך הזה.
- אפליקציה שולחת שמוגדרת להשתמש באפליקציה של מקלט האינטרנט. בדוגמה הזו, השולח משתמש בכלי Command and Control של העברה (cast).
הגדרת האובייקטים של MediaInfo של השולח
תחילה, הגדר את אובייקט MediaInfo של אפליקציית השולח כך שיכלול את השדות הבאים:
contentId
|
מזהה ייחודי לפריט המדיה הזה | |
contentUrl
|
כתובת ה-URL של השידור החלופי שייטען אם בקשת ה-DAI StreamRequest תיכשל מכל סיבה שהיא | |
streamType
|
בשידורים חיים צריך להגדיר את הערך הזה כ-'LIVE'. עבור שידורי VOD, צריך להגדיר את הערך הזה כ-'BUFFERED' | |
customData
|
assetKey
|
שידורים חיים בלבד: מזהה את השידור החי לטעינה |
contentSourceId
|
רק סטרימינג ב-VOD. מזהה את פיד המדיה שמכיל את השידור המבוקש. | |
videoId
|
רק סטרימינג ב-VOD. מזהה את השידור המבוקש בתוך פיד המדיה שצוין. | |
ApiKey
|
מפתח API אופציונלי שנדרש כדי לאחזר את כתובת ה-URL של השידור מ-IMA DAI SDK | |
senderCanSkip
|
ערך בוליאני שמאפשר לנמען לדעת אם למכשיר השולח יש אפשרות להציג לחצן דילוג, וכך להפעיל תמיכה במודעות שניתן לדלג עליהן |
כדי להגדיר את הערכים האלה בכלי הבקרה והפקודה של Cast, לוחצים על הכרטיסייה Load
Media (טעינת מדיה) ומגדירים את סוג בקשת הטעינה המותאמת אישית ל-LOAD
. לאחר מכן, מחליפים את נתוני ה-JSON באזור הטקסט באחד מהאובייקטים הבאים של JSON:
שידור חי
{
"media": {
"contentId": "bbb",
"contentUrl": "https://storage.googleapis.com/interactive-media-ads/media/bbb.m3u8",
"streamType": "LIVE",
"customData": {
"assetKey": "sN_IYUG8STe1ZzhIIE_ksA",
"ApiKey": "",
"senderCanSkip": true
}
},
"credentials": "testCredentials"
}
VOD
{
"media": {
"contentId": "tos",
"contentUrl": "https://storage.googleapis.com/interactive-media-ads/media/tos.m3u8",
"streamType": "BUFFERED",
"customData": {
"contentSourceId": "2548831",
"videoId": "tears-of-steel",
"ApiKey": "",
"senderCanSkip": true
}
},
"credentials": "testCredentials"
}
אפשר לשלוח את האובייקט של בקשת הטעינה בהתאמה אישית למקלט כדי לבדוק את השלבים הבאים.
יצירת מקלט CAF בסיסי
בהתאם למדריך CAF SDK Basic Acceptr, צריך ליצור מקלט אינטרנט בסיסי.
קוד המקבל אמור להיראות כך:
<html>
<head>
<script type="text/javascript"
src="//www.gstatic.com/cast/sdk/libs/caf_receiver/v3/cast_receiver_framework.js">
</script>
</head>
<body>
<cast-media-player></cast-media-player>
<script>
cast.framework.CastReceiverContext.getInstance().start();
</script>
</body>
</html>
ייבוא של IMA DAI SDK והורדת מנהל הנגן
צריך להוסיף תג סקריפט כדי לייבא את IMA DAI SDK ל-CAF במקלט האינטרנט, מיד אחרי שהסקריפט טוען את CAF. ל-CAF DAI SDK יש השפעה קבועה, כך שאין צורך להגדיר גרסה ספציפית. לאחר מכן, בתג הסקריפט שכאן, מאחסנים את ההקשר של המקבל ואת מנהל הנגן כקבועים לפני שמפעילים את המקלט.
<html>
<head>
<script type="text/javascript"
src="//www.gstatic.com/cast/sdk/libs/caf_receiver/v3/cast_receiver_framework.js"></script>
<script src="//imasdk.googleapis.com/js/sdkloader/cast_dai.js"></script>
</head>
<body>
<cast-media-player></cast-media-player>
<script>
const castContext = cast.framework.CastReceiverContext.getInstance();
const playerManager = castContext.getPlayerManager();
castContext.start();
</script>
</body>
</html>
הפעלה של IMA Stream Manager
מפעילים את Stream Manager ב-CAF DAI SDK.
<html>
<head>
<script type="text/javascript"
src="//www.gstatic.com/cast/sdk/libs/caf_receiver/v3/cast_receiver_framework.js"></script>
<script src="//imasdk.googleapis.com/js/sdkloader/cast_dai.js"></script>
</head>
<body>
<cast-media-player></cast-media-player>
<script>
const castContext = cast.framework.CastReceiverContext.getInstance();
const playerManager = castContext.getPlayerManager();
const streamManager = new google.ima.cast.dai.api.StreamManager();
castContext.start();
</script>
</body>
</html>
יצירת יירוט הודעות הטעינה
ב-CAF DAI SDK נעשה שימוש במיירט הודעות של CAF כדי לשלוח בקשות לשידור ולהחליף את כתובת ה-URL של התוכן בשידור ה-DAI הסופי.
מיירט ההודעות קורא לפונקציה streamManager.requestStream(), שמטפל בהגדרת הפסקות למודעות, בבקשת השידור ובהחלפת contentURL
הקיים.
יכול להיות רק מיירט אחד של הודעות טעינה, כך שאם האפליקציה שלכם דורשת שימוש במיירט, עליכם לשלב פונקציות מותאמות אישית באותה קריאה חוזרת (callback).
<html>
<head>
<script type="text/javascript"
src="//www.gstatic.com/cast/sdk/libs/caf_receiver/v3/cast_receiver_framework.js"></script>
<script src="//imasdk.googleapis.com/js/sdkloader/cast_dai.js"></script>
</head>
<body>
<cast-media-player></cast-media-player>
<script>
const castContext = cast.framework.CastReceiverContext.getInstance();
const playerManager = castContext.getPlayerManager();
const streamManager = new google.ima.cast.dai.api.StreamManager();
const getStreamRequest = (request) => null;
playerManager.setMessageInterceptor(
cast.framework.messages.MessageType.LOAD, (request) => {
return streamManager.requestStream(request, getStreamRequest(request))
.then((request) => {
this.broadcast('Stream request successful.');
return Promise.resolve(request);
})
.catch((error) => {
this.broadcast('Stream request failed.');
return Promise.resolve(request);
});
});
castContext.start();
</script>
</body>
</html>
יצירת הבקשה לשידור
כדי להשלים את שילוב ה-CAF DAI, עליכם ליצור את בקשת השידור באמצעות הנתונים שנכללו באובייקט mediaInfo
מהשולח.
<html>
<head>
<script type="text/javascript"
src="//www.gstatic.com/cast/sdk/libs/caf_receiver/v3/cast_receiver_framework.js"></script>
<script src="//imasdk.googleapis.com/js/sdkloader/cast_dai.js"></script>
</head>
<body>
<cast-media-player></cast-media-player>
<script>
const castContext = cast.framework.CastReceiverContext.getInstance();
const playerManager = castContext.getPlayerManager();
const streamManager = new google.ima.cast.dai.api.StreamManager();
const getStreamRequest = (request) => {
const imaRequestData = request.media.customData;
let streamRequest = null;
if (imaRequestData.assetKey) {
// Live stream
streamRequest = new google.ima.cast.dai.api.LiveStreamRequest();
streamRequest.assetKey = imaRequestData.assetKey;
} else if (imaRequestData.contentSourceId) {
// VOD stream
streamRequest = new google.ima.cast.dai.api.VODStreamRequest();
streamRequest.contentSourceId = imaRequestData.contentSourceId;
streamRequest.videoId = imaRequestData.videoId;
}
if (streamRequest && imaRequestData.ApiKey) {
streamRequest.ApiKey = imaRequestData.ApiKey;
}
if (streamRequest && imaRequestData.senderCanSkip) {
streamRequest.senderCanSkip = imaRequestData.senderCanSkip;
}
return streamRequest;
};
playerManager.setMessageInterceptor(
cast.framework.messages.MessageType.LOAD, (request) => {
return streamManager.requestStream(request, getStreamRequest(request))
.then((request) => {
return Promise.resolve(request);
})
.catch((error) => {
this.broadcast('Stream request failed.');
return Promise.resolve(request);
});
});
castContext.start();
</script>
</body>
</html>
עכשיו אפשר לבקש ולהפעיל שידורי DAI באמצעות CAF DAI SDK של Google. למידע נוסף על תכונות SDK מתקדמות יותר, מומלץ לקרוא את המדריכים האחרים או להוריד את אפליקציות המקלט לדוגמה.