Video yayıncısı olarak, izleyicilerinizin şunları yapmasını engellemek isteyebilirsiniz: videonun ortasında gösterilen reklamlara geçmenizi sağlar. Kullanıcı bir reklam arasını atladığında kullanıcıyı reklam arasının başlangıcına geri götürebilir ve reklam arası tamamlandıktan sonra kullanıcıyı daha önce gittiği oynatma konumuna döndürebilirsiniz. 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 içeriği izlemeden önce izlemesi için şu adımları izlemelidir:
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:
Aşağıda gösterildiği gibi, IMA DAI SDK'sını kullanarak reklam görüntülemeyi 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.
tvOS gelişmiş örneği, AVPlayerViewController
,
Burada, kullanıcının bir arama işlemi gerçekleştirdiğini söyleyen bir yetki verme yöntemi bulunur.
Arama başlangıç zamanı, önceki reklam arasından önce gelirse (yani
geçen kullanıcı molayı atlarsa) ve bu ara henüz oynanmadıysa
başlangıcında izlemesi gerekir. Ayrıca, dönüşüm hunisinin başlangıç
ilk olarak ad-break-did-end
işleyicinizde daha sonra kontrol etme isteğinde bulundu:
- (void)playerViewController:(AVPlayerViewController *)playerViewController willResumePlaybackAfterUserNavigatedFromTime:(CMTime)oldTime toTime:(CMTime)targetTime { if (self.streamManager) { IMACuepoint *prevCuepoint = [self.streamManager previousCuepointForStreamTime:CMTimeGetSeconds(targetTime)]; if (prevCuepoint && !prevCuepoint.isPlayed && oldTime < prevCuepoint.startTime) { self.userSeekTime = CMTimeGetSeconds(targetTime); [self.playerViewController.player seekToTime:CMTimeMakeWithSeconds( prevCuepoint.startTime, NSEC_PER_SEC) toleranceBefore:kCMTimeZero toleranceAfter:kCMTimeZero]; } } }
Kullanıcıyı asıl hedefine geri götürün
Etkinlik temsilcinizde, AD_BREAK_ENDED
destek kaydını değiştirerek
reklam arası, reklam kesintisinin sonucu olarak oynatılmıştır.
- (void)streamManager:(IMAStreamManager *)streamManager didReceiveAdEvent:(IMAAdEvent *)event { NSLog(@"StreamManager event (%@).", event.typeString); switch (event.type) { // Your other events go here as normal. case kIMAAdEvent_AD_BREAK_ENDED: { if (self.userSeekTime > 0) { self.playerViewController.player seekToTime:CMTimeMakeWithSeconds(self.userSeekTime, NSEC_PER_SEC) toleranceBefore:kCMTimeZero toleranceAfter:kCMTimeZero]; self.userSeekTime = 0; // existing handling for AD_BREAK_ENDED goes here. break; } // And so on for other events. default: break; } }