Snapback

Sebagai penayang video, Anda mungkin ingin mencegah mencari selain iklan mid-roll Anda. Saat pengguna mencari setelah jeda iklan, Anda dapat mengarahkan mereka kembali ke awal jeda iklan, lalu mereka ke lokasi pencarian setelah jeda iklan selesai. Ini fitur disebut "snapback."

Sebagai contoh, lihat diagram di bawah ini. Penonton Anda sedang menonton video, dan memutuskan untuk mencari dari detik 5 ke detik 15. Namun, ada jeda iklan pada tanda 10 menit yang ingin Anda yang harus mereka tonton sebelum mereka dapat menonton konten setelahnya:

Untuk menampilkan jeda iklan ini, lakukan langkah-langkah berikut:

  1. Periksa apakah pengguna menjalankan pencarian yang melewati jeda iklan yang belum ditonton, dan jika ya, arahkan mereka kembali ke jeda iklan.
  2. Setelah jeda iklan selesai, kembalikan iklan ke pencarian aslinya.

Dalam bentuk diagram, tampilannya seperti ini:

Berikut cara menerapkan alur kerja ini di IMA DAI SDK, seperti yang dilakukan dalam AdvancedExample.

Mencegah pencarian membiarkan jeda iklan tidak ditonton

Periksa apakah pengguna telah menjalankan pencarian yang melewati jeda iklan yang belum ditonton, dan jika ya, arahkan mereka kembali ke jeda iklan. Di Android SDK, gunakan objek PlayerControl untuk mendeteksi pencarian. Saat pengguna mencari, picu metode onSeek() SampleHlsVideoPlayerCallback diimplementasikan oleh SampleAdsWrapper. Metode itu (ditunjukkan di bawah) memeriksa titik tanda sebelum mencari waktu. Jika belum diputar, cari bagian awal jeda iklan tersebut alih-alih titik pencarian awal yang diinginkan, dan menyimpan pencarian titik di snapBackTime.

@Override
public void onSeek(int timeMillis) {
  double timeToSeek = timeMillis;
  if (streamManager != null) {
    CuePoint cuePoint =
        streamManager.getPreviousCuePointForStreamTime(timeMillis / 1000);
    if (cuePoint != null && !cuePoint.isPlayed()) {
      snapBackTime = timeToSeek / 1000.0; // Update snapback time.
      // Missed cue point, so snap back to the beginning of cue point.
      timeToSeek = cuePoint.getStartTime() * 1000;
      videoPlayer.seek(Math.round(timeToSeek));
      videoPlayer.setCanSeek(false);
      return;
    }
  }
  videoPlayer.seek(Math.round(timeToSeek));
}

Mengembalikan pengguna ke pencarian awal

Sekarang saat Anda mendapatkan peristiwa onAdBreakEnded, periksa untuk mengetahui apakah snapBackTime sudah diatur. Jika ya, arahkan pengguna ke titik tersebut dalam streaming, karena iklan jeda yang baru saja mereka tonton adalah hasil dari snapback:

@Override
public void onAdBreakEnded() {
  // Re-enable player controls.
  videoPlayer.setCanSeek(true);
  videoPlayer.enableControls(true);
  if (snapBackTime > 0) {
    videoPlayer.seek(Math.round(snapBackTime * 1000));
  }
  snapBackTime = 0;
}