Video yayıncısı olarak, izleyicilerinizin videonun ortasında gösterilen reklamları atlamasını engellemek isteyebilirsiniz. Kullanıcı bir reklam arasını atladığında onu reklam arasının başlangıcına geri götürebilir ve reklam arası tamamlandıktan sonra daha önce gittiği oynatma konumuna döndürebilirsiniz. Bu özelliğe "geri sarma" denir.
Örnek olarak aşağıdaki şemaya bakın. İzleyiciniz bir video izlerken 5. dakikadan 15. dakikaya atlamaya karar veriyor. Ancak, 10. dakikada bir reklam arası var ve bu reklam arasını izlemeden sonraki içeriği izleyemezler:
Bu reklam arasını göstermek için aşağıdaki adımları uygulayın:
- Kullanıcının, izlenmemiş bir reklam arasını atlayarak ileri sarma işlemi yapıp yapmadığını kontrol edin. Yaptıysa kullanıcıyı reklam arasına geri götürün.
- Reklam arası tamamlandıktan sonra kullanıcıları orijinal oynatma konumlarına geri döndürün.
Bu durum, diyagramda şu şekilde görünür:
Bu iş akışını IMA DAI SDK'sında nasıl uygulayacağınızı AdvancedExample'da gösterildiği gibi aşağıda bulabilirsiniz.
İzleyicilerin, reklam arasını izlemeden geçmesini engelleme
Kullanıcının, izlenmemiş bir reklam arasını geçen bir sarma işlemi yapıp yapmadığını kontrol edin ve yaptıysa kullanıcıyı reklam arasına geri götürün.
Android SDK'sında arama işlemini algılamak için PlayerControl
nesnesini kullanın.
Kullanıcı arama yaptığında SampleAdsWrapper
tarafından uygulanan SampleHlsVideoPlayerCallback
öğesinin onSeek()
yöntemini tetikleyin.
Bu yöntem (aşağıda açıklanmıştır), kullanıcının arama süresinden önce işaret noktasını kontrol eder. Reklam arası oynatılmamışsa kullanıcının başlangıçta istediği arama noktası yerine reklam arasının başına gidin ve bu arama noktasını snapBackTime
'ya kaydedin.
@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ı orijinal arama konumuna geri döndürme
Artık bir onAdBreakEnded
etkinliği aldığınızda snapBackTime
ayarlanıp ayarlanmadığını kontrol edin. Bu durumda, kullanıcının izlediği reklam arası, geri sarma özelliğinin sonucu olduğundan kullanıcıyı akışta o noktaya yönlendirin:
@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;
}