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. Untuk contoh Advanced iOS, gunakan interaksi pengguna dengan UI Anda untuk mendeteksi saat mereka telah menjalankan pencarian. Pertahankan waktu mulai pencarian untuk diperiksa jika mereka telah lulus jeda iklan yang belum diputar dalam pencarian mereka. Saat pengguna melepaskan kontrol video, membandingkan waktunya saat ini dengan waktu jeda iklan terbaru. Jika jeda iklan terjadi setelah dimulainya pencarian waktu (artinya pengguna telah melewatinya) dan game belum dimainkan, mencarinya kembali ke awal jeda iklan. Juga, setel penanda snapback untuk memeriksanya nanti di pengendali lengkap jeda iklan:

- (IBAction)videoControlsTouchStarted:(id)sender {
  self.seekStartTime = self.contentPlayer.currentTime;
}

- (IBAction)videoControlsTouchEnded:(id)sender {
  self.seekEndTime = CMTimeMake(self.progressBar.value, 1);
  IMACuepoint *lastCuepoint =
      [self.streamManager previousCuepointForStreamTime:CMTimeGetSeconds(self.seekEndTime)];
  if (!lastCuepoint.played && (lastCuepoint.startTime > CMTimeGetSeconds(self.seekStartTime))) {
    self.snapbackMode = YES
    // Add 1 to the seek time to get the keyframe at the start of the ad to be your landing place.
    [self.contentPlayer seekToTime:CMTimeMakeWithSeconds(lastCuepoint.startTime + 1, NSEC_PER_SEC)];
  }
}

Mengembalikan pengguna ke pencarian awal

Di pengendali jeda iklan, periksa untuk melihat apakah jeda diputar sebagai akibat dari snapback. Jika ya, tampilkan pengguna dengan tempat yang mereka coba cari awalnya (selama itu tidak di tengah-tengah jeda iklan yang baru diputar):

- (void)streamManager:(IMAStreamManager *)streamManager didReceiveAdEvent:(IMAAdEvent *)event {
  switch (event.type) {
    case kIMAAdEvent_AD_BREAK_ENDED: {
      if (self.snapbackMode) {
        self.snapbackMode = NO;
        if (CMTimeCompare(self.seekEndTime, self.contentPlayer.currentTime)) {
          [self.contentPlayer seekToTime:self.seekEndTime];
        }
      }
      break;
    }
  }
}