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;
};
...
শেষ পর্যন্ত, প্রকাশকরা তাদের ব্যবহারকারীদের অভিজ্ঞতার জন্য দায়বদ্ধ, এবং যেহেতু স্ট্রিমের অনুরোধ করা হলে এবং বিজ্ঞাপনটি চালানোর সময় সমস্ত স্কিপযোগ্য প্রেরকের জন্য সংযোগ বিচ্ছিন্ন করা সম্ভব, আপনি STARTED
ইভেন্টে একটি হ্যান্ডলার সংযুক্ত করতে চাইতে পারেন যা চেক করবে যদি একটি বিজ্ঞাপন এড়ানো যায় এবং প্রেরক এবং প্রাপক উভয়ই এড়িয়ে যাওয়াকে সমর্থন করতে অক্ষম হয়। সেই হ্যান্ডলার স্বয়ংক্রিয়ভাবে এই ধরনের বিজ্ঞাপনগুলি প্রদর্শিত হলে এড়িয়ে যেতে পারে৷ এই ধরনের একটি উন্নত বাস্তবায়ন, তবে, CAF DAI সমর্থনের সুযোগের বাইরে।
ডিফল্টরূপে, যদি এমন একটি এজ কেস ঘটে থাকে, ব্যবহারকারী এখনও প্রযুক্তিগতভাবে একটি স্কিপ শুরু করতে সক্ষম হয়, প্রথমে স্কিপযোগ্যতা সমর্থন করে এমন একটি প্রেরককে সংযুক্ত করে এবং তারপরে প্রদর্শিত স্কিপ বোতামটি ক্লিক করে।