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:
- Periksa apakah pengguna menjalankan pencarian yang melewati jeda iklan yang belum ditonton, dan jika ya, arahkan mereka kembali ke jeda iklan.
- 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;
}