בקשה להצגת מודעות שניתן לדלג עליהן באמצעות CAF DAI SDK היא משימה קצת מורכבת, כי כדי להשתמש בה צריך לזהות אם השילוב של השולחים והמקבלים שנמצאים בשימוש יכול להציג לחצן דילוג ולבצע פעולות לגביו.
ה-SDK עושה כמיטב יכולתו באופן אוטומטי כדי לזהות אם הנמען הנוכחי יכול לעבד לחצן דילוג ולבצע בו פעולות באופן ישיר. עם זאת, בעל התוכן הדיגיטלי צריך לקבוע אם אחד מהשולחים המצורפים יכול להציג מודעות ניתנות לדילוג על ידי החלפת המצב של המאפיין imaRequestData.senderCanSkip
.
בכל הדוגמאות של CAF DAI SDK, השולח יכול לדלג ישירות מהשולח, כחלק מאובייקט המדיה. זהו הטמעה פשוטה בכוונה והיא מתאימה היטב לשולח יחיד, אבל באפליקציות בעולם האמיתי ניתן לצרף מקלט CAF לכמה אפליקציות של שולחים, ויכול להיות שהשולח שממתין בתור קובץ מדיה לא יהיה מחובר עוד כשאובייקט המדיה הזה נטען והבקשה של השידור נשלחת.
מקלט מתקדם יותר יכול לעקוב אחרי סוגי השולחים המשויכים שתומכים בדילוג ואילו לא, ויבדוק בזמן הטעינה אם שולחים שניתן לדלג עליהם כרגע מצורפים למקבל התשלום.
דוגמה (שולח יחיד):
...
let 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;
};
...
דוגמה (תמיכה לשולחים מרובים):
...
let 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;
}
let senders = castContext.getSenders();
let senderCanSkip = (sender) => {
const skippableUserAgents = [
"iOS CastSDK",
"Android CastSDK"
];
// trim user agent to just include device
let userAgent = sender.userAgent.explode(',')[0];
return skippableUserAgents.includes(userAgent);
};
if (streamRequest && senders.some(senderCanSkip)) {
streamRequest.senderCanSkip = imarequestdata.senderCanSkip;
}
return streamRequest;
};
...
בסופו של דבר, בעלי התוכן הדיגיטלי אחראים ומאחר שכל השולחים שניתן לדלג עליהם יכולים להתנתק בין זמן שליחת הבקשה לשידור לבין הצגת המודעה, כדאי לך לצרף handler לאירוע STARTED
שיבדוק אם ניתן לדלג על מודעה, וגם השולחים וגם המקבל לא יכולים לתמוך בדילוג. ה-handler הזה יכול לדלג באופן אוטומטי על מודעות כאלה, אם הן מופיעות. עם זאת, הטמעה מתקדמת כזו לא כללה תמיכה ב-CAF DAI.
כברירת מחדל, אם מתרחש מקרה קצה כזה, מבחינה טכנית המשתמש עדיין יכול לבצע דילוג, על ידי חיבור קודם של שולח שתומך בדילוג ולאחר מכן לחיצה על לחצן הדילוג שמופיע.