Snapback hareketi

Video yayıncısı olarak, izleyicilerinizin şunları yapmasını engellemek isteyebilirsiniz: videonun ortasında gösterilen reklamlara geçmenizi sağlar. Kullanıcı reklam arasını geçmek için arama yaptığında bunları reklam arasının başına döndürebilir ve daha sonra bu reklam arası tamamlandıktan sonra kullanıcıları istediği konuma götürebilir. Bu yeni bir özellik olduğunu göreceksiniz.

Örnek olarak aşağıdaki şemaya bakın. İzleyiciniz bir video izliyorsa ve 5 dakikadan 15. dakikaya geçmeye karar veriyor. Ancak 10. dakikada, istediğiniz bir reklam arası var izleyebilmeleri için şu şekilde çalışır:

Bu reklam arasını göstermek için aşağıdaki adımları uygulayın:

  1. Kullanıcının izlenmemiş bir reklam arasını geçen bir arama yapıp yapmadığını kontrol edin. Gerekirse bunları reklam arasına geri döndürün.
  2. Reklam arası tamamlandıktan sonra reklamları orijinal konumuna geri döndürün.

Diyagram biçiminde bu, aşağıdaki gibi görünür:

Bu iş akışını IMA DAI SDK'sında AdvancedExample (Gelişmiş Örnek).

Sarma işleminin, reklam arasını izlenmeden bırakmasını önleme

Kullanıcının izlenmemiş bir reklam arasından geçen bir arama yapıp yapmadığını kontrol edin. Gerekirse bunları reklam arasına geri döndürün. Android SDK'da sarma işlemini tespit etmek için PlayerControl nesnesini kullanın. Kullanıcı arama yaptığında onSeek() yöntemini tetikleyin SampleHlsVideoPlayerCallback, SampleAdsWrapper tarafından uygulandı. Bu yöntem (aşağıda anlatılmıştır), kullanıcının etiketinden önce işaret noktasını kontrol eder zannediyor. Oynatılmazsa söz konusu reklam arasının başına gidin tercih ettikleri ilk arama noktası yerine o istedikleri zaman snapBackTime bölgesinde puan.

@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));
}

Kullanıcıyı asıl hedefine geri götürün

Artık bir onAdBreakEnded etkinliği aldığınızda snapBackTime olup olmadığını kontrol edin. ayarlandı. Öyleyse kullanıcıyı akışta o noktaya götürün çünkü reklam nedeniyle reklam kesintisi yaşıyorlardı:

@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;
}