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:
- 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.
- 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;
}