Jeda Iklan

Ringkasan

Web Receiver SDK memiliki dukungan bawaan untuk jeda iklan dan iklan pengiring dalam streaming media tertentu. Iklan Display Google menyediakan API untuk menyetel posisi iklan, sumber iklan, perilaku jeda iklan dan klip jeda iklan yang terkait. Dalam panduan ini, Break merujuk pada interval untuk pemutaran yang berisi satu atau beberapa iklan atau bumper dan setiap iklan atau bumper disebut sebagai BreakClip. Jeda ini terkait dengan media yang sedang dimuat atau diputar.

Jenis iklan

Web Receiver SDK mendukung penyisipan iklan sisi klien (CSAI) dan server penyisipan iklan gabungan (SSAI). Iklan yang digabungkan klien dapat ditetapkan secara manual oleh aplikasi atau diekstrak dari file template VAST dan VMAP. Iklan yang digabungkan di server harus ditetapkan secara manual sebelum konten dimuat sebagai iklan yang disematkan atau secara dinamis selama pemutaran konten sebagai diperluas yang disematkan iklan. Penerapan untuk setiap jenis iklan ini dijelaskan secara mendetail di bawah.

digabungkan klien manual

Jeda iklan yang digabungkan klien manual adalah jenis jeda iklan yang digabungkan bersama-sama oleh klien dan ditetapkan secara manual oleh aplikasi menggunakan API SDK. Jenis iklan ini tidak disematkan di streaming konten utama. Tujuan BreakClip harus menyediakan contentId yakni URL yang mengarah ke konten iklan, contentType yang menjelaskan format konten iklan, dan title.

Break harus memiliki isEmbedded dan expanded ditetapkan ke nilai default false. Tujuan position dapat disetel ke jeda iklan pre-roll, mid-roll, atau post-roll (lihat selengkapnya di bagian pemosisian jeda). Saat menyiapkan iklan untuk diputar, Web Receiver SDK membuat instance pemutar lain untuk dimuat dan memutar konten iklan. Jeda ini memerlukan stitched timeline dan harus ditambahkan secara statis (lihat selengkapnya di bagian penyisipan iklan). Contoh di bawah ini menunjukkan penerapan iklan yang digabungkan klien secara manual:

// Create the BreakClip.
let clipClient = new cast.framework.messages.BreakClip('bc_client');
clipClient.title = 'The Ad Title to be displayed during playback';
clipClient.contentId = 'https://example.com/ad.m3u8';
clipClient.contentType = 'application/vnd.apple.mpegurl';

// Optional: Used when HLS ad container formats differ from the main content's.
clipClient.hlsSegmentFormat = cast.framework.messages.HlsSegmentFormat.FMP4;

// Create the Break using the BreakClip id above.
let breakPostrollClient = new cast.framework.messages.Break(
    'break_postroll_client', ['bc_client'], -1);
breakPostrollClient.isEmbedded = false; // Optional: default is false.
breakPostrollClient.expanded = false; // Optional: default is false.

VAST

Web Receiver SDK mendukung penambahan VAST standar IAB (Penayangan Iklan Video template). Jika disediakan, template XML diuraikan untuk membuat klip jeda iklan yang digabungkan klien berikutnya saat memasukkan jeda.

Untuk membuat iklan VAST, aplikasi penerima harus membuat VastAdsRequest dan menentukannya di BreakClip vastAdsRequest saat ini. Objek VastAdsRequest harus memiliki adsResponse ( representasi string dari template XML itu sendiri) atau adTagUrl (URL tempat template XML dihosting) ditentukan. Jika URL sudah ditetapkan, elemen SDK akan menangani pengambilan template. Enkapsulasi Break mengikuti untuk iklan yang digabungkan dengan klien. Iklan ini dapat ditambahkan bersama iklan yang digabungkan oleh klien secara manual dalam jeda yang sama atau dalam jeda terpisah untuk konten yang sama. Contoh di bawah menunjukkan implementasi dasar VAST iklan:

// Create the VastAdsRequest.
let vastTemplate = new cast.framework.messages.VastAdsRequest();
vastTemplate.adTagUrl = 'https://example.com/ads.xml'

// Create the BreakClip.
let clipVast = new cast.framework.messages.BreakClip('bc_vast');
clipVast.vastAdsRequest = vastTemplate;

// Create the Break using the BreakClip id above.
let breakPostrollVast = new cast.framework.messages.Break(
    'break_postroll_vast', ['bc_vast'], -1);
breakPostrollVast.isEmbedded = false; // Optional: default is false.
breakPostrollVast.expanded = false; // Optional: default is false.

Ketika Break yang berisi BreakClip VAST dimasukkan, Penerima Web SDK secara opsional akan mengambil, lalu mengurai template. Saat mengurai, SDK akan membuat BreakClip baru dan mengisinya dengan nilai yang diekstrak dari template seperti contentId, contentType, title, duration, whenSkippable, dan clickThroughUrl. id untuk klip jeda yang dihasilkan adalah setel ke GENERATED:N dengan N adalah bilangan bulat yang bertambah 1 untuk setiap penambahan Klip jeda VAST dibuat mulai 0. Iklan yang dihasilkan kemudian ditambahkan ke array BreakClip. Setiap VAST menghentikan id klip di Break saat ini adalah lalu diganti dengan id klip jeda yang dihasilkan yang sesuai. Cuplikan di bawah ini menggambarkan perubahan dalam MEDIA_STATUS pesan yang berkaitan dengan iklan sebelum dan sesudah memasuki jeda tersebut.

Informasi Break dan BreakClip sebelum memasuki jeda iklan VAST.

"breaks": [
  {
    "id": "break_postroll_vast",
    "breakClipIds": [
      "bc_vast"
    ],
    "position": 0,
    "isWatched": false
  }
],
"breakClips": [
  {
    "id": "bc_vast"
  }
]

Informasi Break dan BreakClip setelah memasuki jeda dengan iklan VAST.

"breaks": [
  {
    "id": "break_postroll_vast",
    "breakClipIds": [
      "GENERATED:0"
    ],
    "position": 0,
    "isWatched": true
  }
],
"breakClips": [
  {
    "id": "bc_vast"
  },
  {
    "id": "GENERATED:0",
    "contentId": "https://example.com/break-clip-1.mpd",
    "contentType": "application/dash+xml",
    "title": "Ad Title Extracted from Template",
    "duration": 10,
    "whenSkippable": 5,
    "clickThroughUrl": "https://example.com/ad-target"
  }
]

VMAP

SDK Penerima Web mendukung VMAP IAB (Playlist Multi-Iklan Video) standar. Saat VMAP disediakan, Web Receiver SDK akan mengurai VMAP respons dan buat objek Break yang digabungkan klien untuk <AdBreak> apa pun entri dalam respons. Tindakan ini juga akan menghasilkan BreakClips yang sesuai dengan objek vastAdsRequest untuk setiap entri <AdSource> yang disediakan di VMAP. Kepada mengaktifkan VMAP untuk menyisipkan iklan ke dalam konten, aplikasi harus membuat VastAdsRequest dan menetapkannya ke vmapAdsRequest properti dari MediaInformation di LoadRequestData. Iklan ini harus disisipkan secara statis (lihat selengkapnya di penyisipan iklan). Di bawah ini adalah cuplikan yang menguraikan pembuatan permintaan VMAP.

// Create the VastAdsRequest.
let vastTemplate = new cast.framework.messages.VastAdsRequest();
vastTemplate.adTagUrl = 'https://example.com/vmap.xml'

// Add it to the MediaInformation of the LoadRequest.
loadRequestData.media.vmapAdsRequest = vastTemplate;

disematkan

Jeda iklan tersemat adalah jenis jeda iklan yang digabungkan di sisi server ke streaming konten utama. Durasi Break dikurangi dari durasi konten utama saat menghitung waktu media.

BreakClip harus menyediakan duration konten iklan, dan title. Break harus memiliki isEmbedded tetapkan ke true dan expanded disetel ke false. Tujuan position dapat disetel sebagai jeda iklan pre-roll atau mid-roll. Jeda iklan post-roll didukung dengan nilai position tepat positif. Lihat selengkapnya di pemosisian jeda. Saat iklan dipicu untuk putar, Web Receiver SDK melanjutkan pemutaran streaming sebagai segmen iklan tertanam di dalamnya. Tidak ada mekanisme pemuatan tambahan untuk jenis iklan ini. Metadata iklan yang relevan ditampilkan kepada pengguna setelah titik pemutaran berada dalam rentang waktu jeda. Jeda ini memerlukan embedded timeline dan harus ditambahkan secara statis (lihat selengkapnya di bagian penyisipan iklan). Tujuan contoh di bawah menunjukkan penerapan dasar iklan embedded.

// Create the BreakClip.
let clipEmbedded = new cast.framework.messages.BreakClip('bc_embedded');
clipEmbedded.title = 'The Ad Title to be displayed during playback';
clipEmbedded.duration = 15;

// Create the Break using the BreakClip id above.
let breakPrerollEmbedded = new cast.framework.messages.Break(
    'break_preroll_embedded', ['bc_embedded'], 0);
breakPrerollEmbedded.isEmbedded = true;
breakPrerollEmbedded.expanded = false; // Optional: default is false.

disematkan diperluas

Jeda iklan yang diperluas disematkan adalah jenis jeda iklan yang digabungkan ditambahkan ke streaming konten utama. Durasi Break disertakan di durasi konten utama saat menghitung waktu media.

BreakClip harus menyediakan duration konten iklan, dan title. Break harus memiliki isEmbedded tetapkan ke true dan expanded tetapkan ke true. Tujuan position dapat disetel sebagai jeda iklan pre-roll atau mid-roll. Jeda iklan post-roll didukung dengan nilai position positif. Lihat selengkapnya di pemosisian jeda. Saat iklan dipicu untuk putar, Web Receiver SDK melanjutkan pemutaran streaming sebagai segmen iklan tertanam di dalamnya. Tidak ada mekanisme pemuatan tambahan untuk jenis iklan ini. Metadata iklan yang relevan ditampilkan kepada pengguna setelah titik pemutaran berada dalam rentang waktu jeda. Jeda ini memerlukan embedded timeline dan dapat ditambahkan baik secara statis atau dinamis (lihat selengkapnya di bagian penyisipan iklan). Contoh di bawah ini menunjukkan penerapan iklan embedded expanded:

// Create the BreakClip.
let clipEmbeddedExpanded =
    new cast.framework.messages.BreakClip('bc_embedded_expanded');
clipEmbeddedExpanded.title = 'The Ad Title to be displayed during playback';
clipEmbeddedExpanded.duration = 15;

// Create the Break using the BreakClip id above.
let breakPrerollEmbeddedExpanded = new cast.framework.messages.Break(
    'break_preroll_embedded_expanded', ['bc_embedded_expanded'], 0);
breakPrerollEmbeddedExpanded.isEmbedded = true;
breakPrerollEmbeddedExpanded.expanded = true;

Jenis linimasa pemain

Saat membuat instance pemutar, Web Receiver SDK memilih jenis linimasa untuk mendukung pemutaran iklan selama pemutaran konten. Setiap linimasa memungkinkan iklan tertentu jenis jeda iklan yang akan ditambahkan. Jenis linimasa ditentukan oleh jenis iklan yang ada selama waktu pemuatan di MediaInformation dari LoadRequestData Jika ada jeda iklan yang disematkan, linimasa embedded akan dipilih. Jika Terdapat jeda iklan yang digabungkan klien, linimasa stitched dipilih. Jika tidak ada iklan, SDK akan menggunakan embedded secara default {i>timeline<i} (rentang waktu). Setelah dipilih, linimasa tidak dapat diubah untuk saat ini item media. Tabel di bawah memberikan deskripsi mendetail tentang setiap linimasa.

Jenis Linimasa Deskripsi
linimasa tersemat Representasi waktu media yang mendukung iklan yang disematkan ke dalam konten utama (jeda iklan sematan dan yang diperluas tersemat). Saat ada jeda iklan yang belum diluaskan, durasinya itu dikurangi dari total durasi saat ini. Di sisi lain, ketika iklan yang diperluas waktu istirahat telah tiba, waktunya dianggap sebagai bagian dari konten utama.
linimasa yang digabungkan Representasi waktu media yang mendukung iklan yang bersumber dari file media eksternal (digabungkan dengan klien manual, VAST dan VMAP jeda iklan). Saat ditambahkan, durasi jeda iklan bukan bagian dari durasi konten utama.

Gambar 1 sampai 3 di bawah mengilustrasikan beberapa konten dengan beragam jenis iklan dan nilai linimasa terkait. Konten dikonfigurasi dengan jeda pre-roll yang berisi dua klip jeda iklan serta jeda mid-roll dan post-roll yang berisi klip jeda tunggal. Waktu pengaturan waktu sejak awal pemutaran konten, waktu media konten utama, dan waktu jeda saat ini memutar klip jeda sejajar di bawah setiap gambar.

Linimasa iklan yang digabungkan klien
Gambar 1: Linimasa yang menampilkan beberapa konten dan 3 jeda iklan yang digabungkan oleh klien.


Linimasa iklan sematan yang digabungkan dengan server
Gambar 2: Linimasa yang menampilkan beberapa konten dan 3 jeda iklan yang disematkan yang digabungkan oleh server.


Linimasa iklan diperpanjang tersemat yang digabungkan server
Gambar 3: Linimasa yang mewakili beberapa konten dan 3 jeda iklan yang digabungkan dengan server dan diperluas.

Posisi jeda

Web Receiver SDK memungkinkan developer menentukan lokasi jeda iklan dilakukan dengan menyetel position dari Break. Nilai ini sesuai dengan waktu media konten utama dan dapat digunakan untuk membuat jeda iklan pre-roll, mid-roll, dan post-roll. Hal ini didefinisikan sebagai berikut:

Posisi Jeda Deskripsi
pre-roll Jeda iklan yang diputar sebelum konten utama. Ini adalah ditunjukkan dengan menyetel breakPosition ke 0
mid-roll Jeda iklan yang diputar di tengah konten. Hal ini dilambangkan dengan menyetel breakPosition ke waktu istirahat lebih besar dari awal konten utama, dan waktu berakhir jeda kurang dari waktu berakhir konten utama baik.
post-roll Jeda iklan yang diputar setelah konten utama. Ini adalah ditunjukkan dengan menyetel breakPosition ke -1 untuk rentang waktu yang digabungkan. Untuk disematkan linimasa breakPosition harus diatur ke durasi konten utama dikurangi dengan durasi jeda. Tidak didukung untuk konten live.

Matriks interoperabilitas

Sebagai referensi cepat, Tabel 1 menampilkan ringkasan jenis dan kompatibilitasnya dengan fitur terkait iklan.

Tabel 1: Matriks interoperabilitas iklan
Dukungan Fitur iklan yang digabungkan dengan klien manual VAST VMAP iklan tersemat iklan diperluas tersemat
kompatibel dengan VAST digabungkan klien manual T/A disematkan diperluas disematkan
rentang waktu digabungkan digabungkan digabungkan disematkan disematkan
penyisipan iklan static static static static statis, dinamis
penghapusan iklan
iklan pre-roll
iklan mid-roll
iklan post-roll
lewati iklan
pencegat upaya jeda
menghentikan intersepsi pemuatan klip

Acara

Saat peristiwa kerusakan tombol terjadi, SDK transmisi akan mengirimkan peristiwa jenis BreaksEvent Aplikasi penerima dapat berlangganan paket tersebut menggunakan PlayerManager addEventListener Compute Engine API.

Peristiwa ini dapat digunakan untuk analisis dan pelacakan pemutaran iklan. Saat VMAP (Playlist Multi-Iklan Video) dan iklan VAST (Template Penayangan Iklan Video) digunakan, peristiwa pelacakan standar apa pun yang disediakan dalam respons secara otomatis yang dikirim oleh SDK.

Jenis peristiwa tercantum dalam Tabel 2 bersama dengan deskripsi detail tentang ketika mereka dipecat.

Siklus Proses Peristiwa Jeda
Gambar 4: Siklus proses peristiwa jeda.
Tabel 2: Peristiwa jeda dan deskripsinya.
Peristiwa Istirahat Deskripsi
BREAK_STARTED Diaktifkan jika waktu media konten utama saat ini sama dengan position dari waktu istirahat yang belum ditonton.
BREAK_CLIP_LOADING Diaktifkan hanya saat klip jeda linimasa yang digabungkan mulai dimuat.
BREAK_CLIP_STARTED Diaktifkan saat klip jeda memulai pemutaran.
BREAK_CLIP_ENDED Diaktifkan saat klip jeda berakhir. Tujuan endedReason akan diisi untuk keadaan berikut:
  • Klip jeda linimasa yang digabungkan diputar sepenuhnya.
  • Transisi klip jeda linimasa yang digabungkan ke klip jeda lainnya.
  • Semua klip jeda dilewati.
  • Klip jeda terakhir diputar sepenuhnya dalam jeda iklan post-roll.
  • Terjadi error.
BREAK_ENDED Diaktifkan saat klip jeda terakhir berakhir.

Penyisipan iklan

SDK Cast memungkinkan aplikasi menyisipkan dan menghapus iklan pada berbagai momen dari sesi transmisi. Dua jenis penyisipan iklan adalah statis dan dinamis. Penyisipan iklan statis mengharuskan iklan ditentukan di bagian LoadRequestData sebelum pembuatan pemutar. Penyisipan iklan dinamis menggunakan BreakManager addBreak API untuk menyisipkan jeda di konten yang sudah dimuat. Setiap jenis penyisipan metode ini kompatibel dengan jenis iklan tertentu. Kompatibilitas ringkasan disediakan dalam matriks interoperabilitas.

Penyisipan iklan statis

Penyisipan iklan statis ditandai dengan menambahkan metadata iklan yang relevan sebelum hingga pembuatan pemutar. Informasi ini disediakan di MediaInformation dari LoadRequestData. Misalnya, ini dapat diatur dalam alamat IP permintaan pemuatan awal atau dapat disisipkan oleh aplikasi Penerima Web dengan mencegat permintaan LOAD. Setelah LoadRequestData ditampilkan ke Web Receiver SDK untuk diproses, pemutar akan dibuat. Lihat selengkapnya di memuat media. Contoh di bawah menampilkan iklan yang digabungkan klien secara manual yang ditambahkan dalam permintaan LOAD interseptor.

const context = cast.framework.CastReceiverContext.getInstance();
const playerManager = context.getPlayerManager();

playerManager.setMessageInterceptor(
    cast.framework.messages.MessageType.LOAD, loadRequestData => {

  // Create the BreakClip.
  let clipClient = new cast.framework.messages.BreakClip('bc_client');
  clipClient.title = 'The Ad Title to be displayed during playback';
  clipClient.contentId = 'https://example.com/ad.mp4';
  clipClient.contentType = 'video/mp4';

  // Create the Break using the BreakClip id above.
  let breakPostrollClient = new cast.framework.messages.Break(
      'break_postroll_client', ['bc_client'], -1);

  // Set the ad information in the load request data.
  let media = loadRequestData.media;
  media.breakClips = [clipClient];
  media.breaks = [breakPostrollClient];

  return loadRequestData;
});

Penyisipan iklan dinamis

Penyisipan iklan dinamis ditandai dengan menetapkan jeda iklan selama konten berlangsung pemutaran. Hal ini dilakukan dengan mendapatkan instance BreakManager dan memanggil tindakan addBreak Compute Engine API. Proses ini memerlukan minimal dua parameter, diperluas tersemat Break dan array dari BreakClip Properti ketiga opsional disertakan untuk memaksa pengiriman perubahan ke pengirim yang terhubung melalui siaran MediaStatus jika disetel ke true. Kapan menambahkan klip jeda dan jeda, ID yang sesuai harus unik. Iklan-iklan ini hanya dapat ditambahkan setelah pemain telah dibuat. Web Receiver SDK diaktifkan tindakan PLAYER_LOADING setelah pemutar dibuat. Lihat contoh di bawah ini yang menampilkan penggunaan dalam pengendali peristiwa yang merespons perubahan metadata ID3 dari streaming dan membuat objek Break dan BreakClip untuk memasukkannya ke linimasa.

const context = cast.framework.CastReceiverContext.getInstance();
const playerManager = context.getPlayerManager();
const breakManager = playerManager.getBreakManager();

playerManager.addEventListener(cast.framework.events.EventType.ID3, (event) => {

  // Create the BreakClip.
  let clipEmbeddedExpanded = parseBreakClipFromData(event.segmentData);
  let breakEmbeddedExpanded = parseExpandedBreakFromData(event.segmentData);

  // Add the break and break clip.
  breakManager.addBreak(breakEmbeddedExpanded, [clipEmbeddedExpanded]);
});

Penghapusan iklan dinamis

Untuk menghapus jeda dinamis, aplikasi harus memanggil removeBreakById selama pemutaran. Fungsi ini mengambil ID string jeda untuk dihapus dari {i>timeline<i}. breakId yang ditentukan harus menunjuk ke penyematan yang disematkan jeda iklan diluaskan. Jika ada jenis jeda iklan lainnya yang terdeteksi, jeda iklan akan tetap ada di linimasa. Lihat contoh di bawah yang menghapus jeda.

const context = cast.framework.CastReceiverContext.getInstance();
const playerManager = context.getPlayerManager();
const breakManager = playerManager.getBreakManager();

breakManager.removeBreakById('break_midroll_embedded_expanded');

Perilaku istirahat

SDK menentukan perilaku default saat pemain masuk dan meninggalkan jeda dan menyediakan cara untuk menyesuaikannya lebih lanjut menggunakan beberapa API yang disediakan inci BreakManager

Perilaku jeda default

Saat Break dimasukkan melalui pemutaran reguler atau dengan mencari di atas Break, SDK akan mengevaluasi apakah pengguna sudah melihatnya atau belum dengan memeriksa tindakan isWatched saat ini. Saat dibuat, nilai default jeda untuk properti ini adalah false. Jika properti true, jeda tidak akan diputar saat dimasukkan dan main konten akan terus diputar. Jika properti adalah false, jedanya akan yang diputar saat dimasukkan.

Saat mencari jeda sebelumnya, implementasi default mendapatkan semua Break item yang position-nya berada di antara operasi pencarian seekFrom dan seekTo masing-masing. Dari daftar jeda ini, SDK akan memutar Break yang position-nya yang paling dekat dengan nilai seekTo dan yang properti isWatched-nya disetel ke false. Properti isWatched jeda tersebut kemudian akan ditetapkan ke true dan pemutar video akan mulai memutar klip jeda iklan. Setelah waktu istirahat, konten utama akan melanjutkan pemutaran dari posisi seekTo. Jika tidak jeda iklan tersedia, maka tidak ada jeda yang akan diputar dan konten utama akan dilanjutkan yang bermain di posisi seekTo.

Selama pemutaran jeda, SDK akan menyiarkan update yang relevan ke aplikasi pengirim di MediaStatus Aplikasi ini akan menggunakan siaran tersebut untuk memperbarui UI iklan dengan membaca tindakan breakStatus saat ini. Properti ini hanya ditentukan selama pemutaran jeda.

Aplikasi penerima juga dapat secara langsung mengkueri informasi yang berkaitan dengan posisi titik pemutaran terhadap waktu BreakClip saat ini ditampilkan dengan memanggil PlayerManager getBreakClipCurrentTimeSec Demikian pula, aplikasi dapat mengkueri durasi BreakClip saat ini dengan menelepon getBreakClipDurationSec.

Perilaku jeda kustom

Perilaku default untuk klip retak dan rusak dapat dimodifikasi menggunakan setBreakClipLoadInterceptor dan setBreakSeekInterceptor yang tersedia di BreakManager.

Intersepsi percobaan istirahat

Intersepsi pencarian jeda memungkinkan aplikasi mengontrol perilaku pencarian di atas jeda iklan. Fungsi ini dipicu saat operasi pencarian diminta yang bergerak maju atau mundur selama satu atau beberapa jeda. Saat dipanggil, BreakSeekData diteruskan sebagai parameter ke fungsi callback. Objek BreakSeekData berisi array Break objek yang properti position-nya disetel ke angka antara waktu pemutaran didefinisikan sebagai seekFrom dan waktu destinasi pencarian seekTo.

Pencegat ini memungkinkan objek Break di setiap jeda untuk diubah. Jika diterapkan, pencegat pencarian jeda harus menentukan iklan mana jeda untuk diputar dengan menampilkan objek BreakSeekData yang dimodifikasi secara opsional. Tujuan pemain akan melanjutkan untuk memutar semua jeda yang termasuk dalam nilai yang ditampilkan. Jika nilai dari null atau tidak ada yang ditampilkan dari pencegat pencarian jeda, jedanya akan dilewati.

Lihat contoh di bawah ini untuk implementasi sederhana pencegat yang mengganti perilaku default untuk menonton semua jeda iklan yang dicari dengan pengecualian jeda yang sudah ditonton.

const context = cast.framework.CastReceiverContext.getInstance();
const playerManager = context.getPlayerManager();
const breakManager = playerManager.getBreakManager();

breakManager.setBreakSeekInterceptor((breakSeekData) => {

  // Filter the breaks array by removing watched breaks.
  const unwatchedBreaks =
      breakSeekData.breaks.filter(adBreak => !adBreak.isWatched);
  breakSeekData.breaks = unwatchedBreaks;

  return breakSeekData;
});

Memutus interseptor pemuatan klip

Dengan menggunakan intersepsi pemuatan klip jeda, objek BreakClip dapat diubah sebelum pemutarannya dimulai.

Intersepsi pemuatan klip jeda hanya dipanggil untuk jeda linimasa yang digabungkan dan dapat diatur menggunakan setBreakClipLoadInterceptor Sebelum memasukkan Break, interseptor ini dipanggil sekali untuk setiap individu BreakClip ditentukan dalam jeda tersebut. SDK meneruskan BreakClip sebagai parameter fungsi callback. Aplikasi kemudian dapat memodifikasi BreakClip ini dan menampilkannya sehingga SDK dapat mengambil dan menampilkan jeda iklan dengan konfigurasi yang telah diperbarui. Jika null atau tidak ada yang ditampilkan, jeda iklan klip dilewati.

Lihat di bawah untuk contoh yang mengubah contentUrl klip jeda dengan fungsi utilitas memanggil getUrlFromClipId dengan id dari BreakClip dipetakan ke URL.

const context = cast.framework.CastReceiverContext.getInstance();
const playerManager = context.getPlayerManager();
const breakManager = playerManager.getBreakManager();

breakManager.setBreakClipLoadInterceptor(
    (breakClip, breakClipLoadInterceptorContext) => {

  // Obtains the URL of a break clip id from a function call.
  breakClip.contentUrl = getUrlFromClipId(breakClip.id);

  return breakClip;
});

Iklan Dilewati

Web Receiver SDK menyediakan API untuk melewati jeda iklan dan klip jeda individual dalam jeda iklan. SDK ini juga memungkinkan pengguna secara opsional melewati klip jeda dengan berinteraksi dengan aplikasi pengirim atau perangkat layar pintar mereka.

Klip jeda yang dapat dilewati pengguna

Menetapkan klip jeda iklan sebagai dapat dilewati akan memungkinkan pengguna berinteraksi dengan pengirim yang terhubung aplikasi dan perangkat layar pintar untuk memilih melewati bagian lainnya dari sedang memutar klip jeda. Menyetel whenSkippable ke jumlah detik non-negatif akan mengaktifkan fitur ini untuk Objek BreakClip. Pemutar akan menganggap klip jeda dapat dilewati setelah klip jeda telah diputar selama jumlah detik tersebut. Menetapkan nilai ini ke 0 memungkinkan pengguna untuk langsung melewati klip jeda.

// Create the BreakClip.
let clip = new cast.framework.messages.BreakClip('bc');
clip.title = 'The Ad Title to be displayed during playback';
clip.whenSkippable = 10; // Users can skip the clip after 10 seconds of playback.

Informasi ini dapat ditetapkan dalam permintaan pemuatan asli pengirim atau di aplikasi penerima. Jika dilewati, klip jeda iklan di jeda iklan linimasa yang digabungkan akan berhenti memutar klip jeda saat ini. Pemutar akan memuat jika ada, atau memuat konten utama. Jika dilewati, klip jeda dalam linimasa yang disematkan akan mengarah ke akhir klip jeda iklan melanjutkan pemutaran streaming pada saat itu.

Melewati iklan secara terprogram

Iklan juga dapat dilewati secara otomatis tanpa interaksi pengguna.

Agar tidak dapat memutar jeda aplikasi, aplikasi harus menyetel isWatched properti Break hingga true. Hal ini dapat dilakukan kapan saja selama proses pemuatan urutan video, atau pemutaran konten. Properti isWatched dievaluasi oleh pemutar ketika position jeda terpenuhi dalam waktu konten utama saat ini. Di pada saat itu, pemain akan menentukan apakah jeda harus dimasukkan atau tidak. Lihat contoh di bawah ini yang melakukan loop pada semua jeda dan memodifikasi saat pemutar sedang dimuat.

const context = cast.framework.CastReceiverContext.getInstance();
const playerManager = context.getPlayerManager();
const breakManager = playerManager.getBreakManager();

playerManager.addEventListener(cast.framework.events.EventType.PLAYER_LOADING,
    (event) => {

  // Obtain the breaks and iterate through each item to skip all ad breaks.
  let breaks = breakManager.getBreaks();
  breaks.forEach((brk) => {
    brk.isWatched = true;
  });
});

Untuk melewati klip jeda tertentu secara terprogram, intersepsi pemuatan klip jeda harus digunakan. Menurut menampilkan null atau tidak menampilkan nilai dalam fungsi callback, klip di jeda tersebut akan dilewati.

const context = cast.framework.CastReceiverContext.getInstance();
const playerManager = context.getPlayerManager();
const breakManager = playerManager.getBreakManager();

breakManager.setBreakClipLoadInterceptor(
      (breakClip, breakClipLoadInterceptorContext) => {
  return null;
});