Dapat dilewati

Meminta dan menampilkan iklan yang dapat dilewati dengan CAF DAI SDK adalah tugas yang rumit, karena harus mengidentifikasi apakah kombinasi pengirim dan penerima yang digunakan memiliki kemampuan untuk menampilkan dan berinteraksi dengan tombol lewati.

SDK akan otomatis melakukan upaya terbaik untuk mendeteksi apakah penerima saat ini memiliki kemampuan untuk merender dan berinteraksi dengan tombol lewati secara langsung. Namun, penayang harus menentukan apakah salah satu pengirim yang dilampirkan dapat menampilkan iklan yang dapat dilewati, dengan mengalihkan atribut imaRequestData.senderCanSkip.

Di semua sampel untuk CAF DAI SDK, pengirimCanSkip diteruskan langsung dari pengirim, sebagai bagian dari objek media. Ini adalah implementasi yang sengaja disederhanakan dan berfungsi dengan baik untuk satu pengirim, tetapi dalam aplikasi sebenarnya, penerima CAF dapat dilampirkan ke beberapa aplikasi pengirim, dan pengirim yang mengantrekan file media mungkin tidak lagi terhubung saat objek media tersebut dimuat dan permintaan streaming dibuat.

Penerima yang lebih canggih dapat melacak jenis pengirim terafiliasi yang mendukung lewati, dan yang tidak, serta akan memeriksa pada waktu pemuatan untuk mengetahui apakah pengirim yang mampu melewati saat ini dilampirkan ke penerima.

Contoh (pengirim tunggal):

...

    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;
    };
...

Contoh (dukungan multi-pengirim):

...

    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;
    };

...

Pada akhirnya, penayang bertanggung jawab atas pengalaman penggunanya, dan karena ada kemungkinan bagi semua pengirim yang dapat dilewati untuk terputus antara saat permintaan streaming dibuat dan saat iklan diputar, sebaiknya lampirkan pengendali ke peristiwa STARTED yang akan memeriksa apakah iklan dapat dilewati dan pengirim serta penerima tidak dapat mendukung setelan batas waktu yang dapat dilewati. Pengendali tersebut dapat secara otomatis melewati iklan tersebut, jika muncul. Namun, penerapan lanjutan tersebut berada di luar cakupan dukungan DAI CAF.

Secara default, jika kasus ekstrem semacam itu terjadi, pengguna secara teknis masih dapat memulai lewati, dengan terlebih dahulu menghubungkan pengirim yang mendukung setelan batas waktu yang dapat dilewati, lalu mengklik tombol lewati yang muncul.