Sebagai penayang video, Anda mungkin ingin mencegah penonton melewati iklan mid-roll. Saat pengguna mencari melewati jeda iklan, Anda dapat mengembalikannya ke awal jeda iklan tersebut, lalu mengembalikannya ke lokasi pencarian setelah jeda iklan selesai. Fitur ini disebut "kembali ke posisi semula".
Sebagai contoh, lihat diagram di bawah. Penonton Anda sedang menonton video, dan memutuskan untuk mencari dari tanda 5 menit ke tanda 15 menit. Namun, ada jeda iklan pada menit ke-10 yang ingin Anda tampilkan sebelum mereka dapat menonton konten setelahnya:
Untuk menampilkan jeda iklan ini, lakukan langkah-langkah berikut:
- Periksa apakah pengguna menjalankan pencarian yang melompati jeda iklan yang belum ditonton, dan jika ya, kembalikan mereka ke jeda iklan.
- Setelah jeda iklan selesai, kembalikan pengguna ke pencarian aslinya.
Dalam bentuk diagram, tampilannya seperti ini:
Berikut cara menerapkan alur kerja ini di IMA DAI SDK, seperti yang dilakukan di AdvancedExample.
Mencegah pencarian keluar dari jeda iklan yang belum ditonton
Periksa apakah pengguna telah menjalankan pencarian yang melewati jeda iklan yang belum ditonton,
dan jika ya, bawa mereka kembali ke jeda iklan.
Di Android SDK, gunakan objek PlayerControl
untuk mendeteksi pencarian.
Saat pengguna mencari, pemicu metode onSeek()
dari
SampleHlsVideoPlayerCallback
yang diterapkan oleh SampleAdsWrapper
.
Metode tersebut (ditampilkan di bawah) memeriksa titik isyarat sebelum waktu penelusuran pengguna. Jika belum diputar, cari ke awal jeda iklan tersebut, bukan ke titik pencarian awal yang diinginkan, dan simpan titik pencarian yang diinginkan tersebut 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 aslinya
Sekarang, saat Anda mendapatkan peristiwa onAdBreakEnded
, periksa apakah snapBackTime
disetel. Jika ya, arahkan pengguna ke titik tersebut dalam streaming, karena jeda iklan yang baru saja ditonton adalah hasil dari fitur kembali ke posisi terakhir:
@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;
}