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 AdvancedExample'da yapıldığı gibi nasıl uygulayacağınız aşağıda açıklanmıştır.
İ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. iOS Advanced örneğinde, kullanıcının arama işlemi gerçekleştirdiğini algılamak için kullanıcının kullanıcı arayüzünüzle etkileşimini kullanın. Kullanıcıların arama sırasında oynatılmamış bir reklam arasını atlayıp atlamadığını kontrol etmek için arama başlangıç zamanını koruyun. Kullanıcı video kontrollerini bıraktığında geçerli zamanı en son reklam arası zamanıyla karşılaştırın. Reklam arası, arama başlangıç zamanından sonra geliyorsa (yani kullanıcı reklam arasını atlamışsa) ve henüz oynatılmamışsa kullanıcıyı reklam arasının başlangıcına geri götürün. Ayrıca, reklam arası tamamlama işleyicinizde daha sonra kontrol etmek için bir geri sarma işareti ayarlayın:
- (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)];
}
}
Kullanıcıyı orijinal arama konumuna geri döndürme
Reklam arası sona erdi işleyicinizde, önceki aranın geri sarma sonucunda oynatılıp oynatılmadığını kontrol edin. Bu durumda, kullanıcıyı başlangıçta gitmeye çalıştığı yere geri döndürün (bu yer, az önce oynatılan reklam arasının ortası olmadığı sürece):
- (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;
}
}
}