सीएएफ़ डीएआई SDK टूल के साथ, स्किप किए जा सकने वाले विज्ञापनों का अनुरोध करना और उन्हें दिखाना थोड़ा मुश्किल काम है. ऐसा इसलिए, क्योंकि इसमें यह पता लगाना ज़रूरी है कि इस्तेमाल किए जा रहे भेजने वालों और पाने वालों के कॉम्बिनेशन में, स्किप बटन को दिखाने और उससे इंटरैक्ट करने की सुविधा है या नहीं.
SDK टूल अपने-आप यह पता लगाने की पूरी कोशिश करेगा कि मौजूदा रिसीवर के पास सीधे स्किप बटन को रेंडर करने और उससे इंटरैक्ट करने की सुविधा है या नहीं. हालांकि, imaRequestData.senderCanSkip
एट्रिब्यूट को टॉगल करके पब्लिशर को यह तय करना होगा कि अटैच किया गया कोई ईमेल खाता, स्किप किए जा सकने वाले विज्ञापन दिखा सकता है या नहीं.
सीएएफ़ डीएआई SDK टूल के सभी सैंपल में, सेंडरकैन स्किप करने पर, सीधे तौर पर मैसेज भेजने वाले व्यक्ति के पास मीडिया ऑब्जेक्ट के हिस्से के तौर पर उसे पास किया जाता है. इसे लागू करने के तरीके को जान-बूझकर आसान बनाया गया है. यह एक भेजने वाले के लिए अच्छी तरह से काम करता है. हालांकि, असल दुनिया के ऐप्लिकेशन में एक सीएएफ़ रिसीवर को भेजने वाले कई ऐप्लिकेशन के साथ जोड़ा जा सकता है. इसके अलावा, हो सकता है कि मीडिया फ़ाइल को सूची में जोड़ने वाला व्यक्ति, मीडिया ऑब्जेक्ट के लोड होने और स्ट्रीम का अनुरोध करने के बाद कनेक्ट न हो.
ज़्यादा बेहतर पाने वाला व्यक्ति यह ट्रैक कर सकता है कि अलग-अलग तरह के सहयोगी भेजने वालों के लिए, किस तरह के ईमेल को स्किप किया जा सकता है और किनमें नहीं. साथ ही, यह कॉन्टेंट लोड होने के समय जांच करेगा कि क्या अभी कोई ईमेल भेजने वाले व्यक्ति से जोड़ा जा सकता है या नहीं.
उदाहरण (एक भेजने वाले):
...
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;
};
...
कुल मिलाकर, पब्लिशर अपने उपयोगकर्ताओं की अनुभव है और स्ट्रीमिंग का अनुरोध किए जाने और विज्ञापन चलाए जाने के समय के बीच डिसकनेक्ट किया जा सकता है. इसलिए, STARTED
इवेंट में एक हैंडलर अटैच किया जा सकता है. इससे यह पता चलेगा कि विज्ञापन को स्किप किया जा सकता है या नहीं. साथ ही, विज्ञापन भेजने और पाने वाला, दोनों ही स्किप किए जा सकने की सुविधा को चालू नहीं कर पाएंगे. अगर ऐसे विज्ञापन दिखते हैं, तो वह हैंडलर उन्हें अपने-आप स्किप कर सकता है. हालांकि, इस तरह का बेहतर तरीके से लागू करना, सीएएफ़ डीएआई से जुड़ी सहायता के दायरे से बाहर है.
डिफ़ॉल्ट रूप से, अगर ऐसा कोई किनारे वाला मामला होता है, तो उपयोगकर्ता अब भी तकनीकी रूप से स्किप करने की प्रोसेस शुरू कर सकता है. इसके लिए, उपयोगकर्ता सबसे पहले उस भेजने वाले व्यक्ति को कनेक्ट करेगा जो स्किप करने की सुविधा देता है. इसके बाद, 'स्किप करें' बटन पर क्लिक करके ऐसा किया जा सकता है.