Việc yêu cầu và hiển thị quảng cáo có thể bỏ qua bằng SDK DAI của CAF là một nhiệm vụ phức tạp vì cần phải xác định xem tổ hợp người gửi và người nhận đang sử dụng có khả năng hiển thị và tương tác với nút bỏ qua hay không.
SDK sẽ tự động cố gắng hết sức để phát hiện xem receiver hiện tại có thể kết xuất và tương tác trực tiếp với nút bỏ qua hay không. Tuy nhiên, nhà xuất bản cần xác định xem có người gửi đính kèm nào có thể hiển thị quảng cáo có thể bỏ qua hay không bằng cách bật/tắt thuộc tính imaRequestData.senderCanSkip
.
Trong tất cả các mẫu cho SDK DAI của CAF, sentCanSkip được chuyển trực tiếp từ người gửi, như một phần của đối tượng nội dung đa phương tiện. Đây là cách triển khai được đơn giản hoá có chủ đích và hoạt động hiệu quả cho một người gửi. Tuy nhiên, trong các ứng dụng thực tế, bộ nhận CAF có thể được đính kèm vào nhiều ứng dụng của người gửi và người gửi đang xếp hàng một tệp đa phương tiện có thể không còn được kết nối khi đối tượng nội dung đa phương tiện đó được tải và thực hiện yêu cầu phát trực tuyến.
Trình nhận nâng cao hơn có thể theo dõi xem kiểu người gửi được liên kết nào hỗ trợ bỏ qua và không hỗ trợ việc bỏ qua, đồng thời sẽ kiểm tra vào thời gian tải để xem liệu có người gửi nào có khả năng bỏ qua hiện được đính kèm với trình nhận hay không.
Ví dụ (một người gửi):
...
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;
};
...
Ví dụ (hỗ trợ nhiều người gửi):
...
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;
};
...
Cuối cùng, nhà xuất bản phải chịu trách nhiệm về và vì tất cả người gửi có thể bỏ qua đều có thể ngắt kết nối giữa thời điểm tạo yêu cầu luồng và khi quảng cáo được phát, nên bạn có thể cần đính kèm một trình xử lý vào sự kiện STARTED
để kiểm tra xem một quảng cáo có thể bỏ qua hay không và cả người gửi và người nhận đều không thể hỗ trợ khả năng bỏ qua. Trình xử lý đó có thể tự động bỏ qua những quảng cáo như vậy nếu chúng xuất hiện. Tuy nhiên, cách triển khai nâng cao như vậy nằm ngoài phạm vi hỗ trợ DAI cho CAF.
Theo mặc định, nếu một trường hợp hiếm gặp như vậy xảy ra, thì về mặt kỹ thuật, người dùng vẫn có thể bắt đầu bỏ qua bằng cách kết nối một người gửi có hỗ trợ khả năng bỏ qua, sau đó nhấp vào nút bỏ qua xuất hiện.