การขอและการแสดงโฆษณาแบบข้ามได้ด้วย CAF DAI SDK เป็นงานที่ซับซ้อน เนื่องจากจะต้องระบุว่าผู้ส่งและผู้รับที่ใช้งานอยู่นั้นสามารถแสดงและโต้ตอบกับปุ่มข้ามได้หรือไม่
SDK จะพยายามอย่างดีที่สุดโดยอัตโนมัติในการตรวจหาว่าผู้รับปัจจุบันสามารถแสดงผลและโต้ตอบกับปุ่มข้ามได้โดยตรงหรือไม่ อย่างไรก็ตาม ผู้เผยแพร่โฆษณาต้องกำหนดว่าผู้ส่งที่แนบมาด้วยสามารถแสดงโฆษณาที่ข้ามได้หรือไม่โดยการสลับแอตทริบิวต์ imaRequestData.senderCanSkip
ในตัวอย่างทั้งหมดสำหรับ CAF DAI SDK จะมีการส่งSenderCanThrough จากผู้ส่งโดยตรงโดยเป็นส่วนหนึ่งของออบเจ็กต์สื่อ วิธีนี้เป็นวิธีการที่เรียบง่ายซึ่งใช้งานได้ดีสำหรับผู้ส่งรายเดียว แต่ในแอปพลิเคชันที่ใช้งานจริง ตัวรับ 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
โดยค่าเริ่มต้น หากเกิดกรณี Edge Case ขึ้น ผู้ใช้ยังคงทางเทคนิคเริ่มการข้ามได้ โดยให้เชื่อมต่อผู้ส่งที่รองรับความสามารถในการข้ามก่อน แล้วจึงคลิกปุ่มข้ามที่ปรากฏขึ้น