Dapat dilewati

Meminta dan menampilkan iklan yang dapat dilewati dengan CAF DAI SDK adalah tugas yang sedikit rumit, karena memerlukan identifikasi 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 terlampir dapat menampilkan iklan yang dapat dilewati, dengan mengalihkan atribut imaRequestData.senderCanSkip.

Di semua contoh untuk CAF DAI SDK, pengirimCanSkip diteruskan langsung dari pengirim, sebagai bagian dari objek media. Ini adalah implementasi yang disederhanakan dan berfungsi dengan baik untuk satu pengirim, tetapi dalam aplikasi di dunia nyata, 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 mana yang mendukung untuk dilewati dan yang tidak, serta akan memeriksa pada waktu pemuatan untuk melihat apakah ada pengirim dengan kemampuan melewati yang saat ini terpasang 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, dan karena semua pengirim yang dapat dilewati dapat terputus antara saat permintaan streaming dibuat dan saat iklan diputar, sebaiknya sertakan pengendali ke peristiwa STARTED yang akan memeriksa apakah iklan dapat dilewati dan pengirim serta penerima tidak dapat mendukung setelan dapat dilewati. Pengendali tersebut dapat otomatis melewati iklan tersebut, jika iklan muncul. Namun, penerapan lanjutan tersebut berada di luar cakupan dukungan DAI CAF.

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