ความสามารถในการข้าม

การขอและแสดงโฆษณาแบบข้ามได้ด้วย CAF DAI SDK เป็นงานที่มีความซับซ้อนเล็กน้อย เนื่องจากต้องระบุว่าร่วมกันระหว่างผู้ส่งและผู้รับที่ใช้งานอยู่จะแสดงและโต้ตอบกับปุ่มข้ามได้หรือไม่

SDK จะพยายามอย่างเต็มที่โดยอัตโนมัติในการตรวจหาว่า ตัวรับสัญญาณปัจจุบันสามารถแสดงผลและโต้ตอบกับปุ่มข้ามได้โดยตรงหรือไม่ อย่างไรก็ตาม ผู้เผยแพร่โฆษณาต้องพิจารณาว่าผู้ส่งที่แนบมาสามารถแสดงโฆษณาแบบข้ามได้หรือไม่ โดยสลับแอตทริบิวต์ imaRequestData.senderCanSkip

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

โดยค่าเริ่มต้น หากเกิดกรณีเช่นนี้ ผู้ใช้ยังคงสามารถเริ่มข้ามทางเทคนิคได้ โดยเชื่อมต่อผู้ส่งที่รองรับความสามารถในการข้ามก่อน จากนั้นจึงคลิกปุ่มข้ามที่ปรากฏขึ้น